いつも大変お世話になっております。
まあさと申します。
今回proguardの難読化について質問させて頂きたく投稿致しました。
アプリの内容は、webview#addJavascriptInterfaceにてjavascriptと連携をするクラスを作成し、
webview内のボタンを押下する事でアプリ内のメソッドが呼ばれる内容です。
public class JSITEST extends
Activity{
onCreate(){
~~~~
}
onResume(){
~~~~
webView.addJavascriptInterface(new
JavascriptInterface(), "android");
}
private static class
JavascriptInterface {
//webview内でボタン押下された際に呼び出されるメソッド
public void
jsrun(){
~~~~
}
}
}
簡単にまとめると上記のような内容となっております。
そこで、こちらをproguardを使用せずにビルドすると問題なくjsrun()が実行されるのですが、
proguardを使用すると、jsrun()は実行されなくなってしまいます。
色々調べてみると、JavascriptInterfaceはproguardの難読化から除外すべきという情報が多々ありまして、
このクラス自体を除外しようと、proguard-project.txtに下記のように記述致しました。
-keep class com.package.JSITEST {
*;
}
しかし、設定後にビルドを行ってもjsrun()は呼ばれません。
mapping.txtの読み方がいまいち理解できていないのですが、一応中を見てみたところ
JavascriptInterfaceのクラスがリネームされているような雰囲気だったので、こちらが原因なのではないかと疑っている所です。
とはいえ、クラス全体を除外しているにも関わらず、リネームされるのはなぜかも分かりません。
もしどなたかアドバイス頂けましたら大変光栄です。
よろしくお願い致します。