proguardを使用したandroid 4.2以降の問題があります。
基本的に、私は次のような WebView で JavascriptInterface を使用します。
public class MyJavascriptInterface {
public void doSomething() { ... }
}
今私が理解しているのは、プロガードがコードを難読化すると、クラス名とメソッド名の名前が変更されるため、Javascript から呼び出すことができなくなるということです。そのため、これを proguard 構成に追加する必要があります。
-keepclassmembers class mypackage.MyJavascriptInterface {
public void doSomething();
}
ターゲット SDK を 17 (Android 4.2) に設定すると@JavascriptInterface
、セキュリティ上の理由から、Javascript インターフェイス メソッドに注釈を追加する必要があります。
@JavascriptInterface
public class MyJavascriptInterface {
public void doSomething() { ... }
}
問題は、proguard が有効になっている場合、これが機能しなくなることです (難読化ステップでクラスの名前がまだ変更されているかのように、doSomething は呼び出されません)。プロガードを無効にすると、コードは正常に動作します。
これをターゲット SDK 17 で機能させるにはどうすればよいですか?