LoginSignup
13
15

More than 5 years have passed since last update.

WebViewのJavascriptInterfaceを使用したアプリのAPKファイルを作成する際の注意

Posted at

WebViewのJavascriptInterfaceを使用してWebView内HTMLのjavascriptからアプリのメソッドをキックする処理を入れていたら、
APKファイルを作成してインストールした途端にそれが動かなくなる事態に。

デバッグしてみるとこんなメッセージが。

 [INFO:CONSOLE(37)] "Uncaught TypeError: Object [object Object] has no method 'kickFromJavaScript'", source: http://hogehoge.jp/ (37)

定義元はJavascriptInterface

@JavascriptInterface
public void kickFromJavaScript() { ... }

原因は、APKファイルを作成する際にProGuardをかけていたから。
ProGuardをかける場合はJavascriptInterfaceのアノテーションを明示的に宣言(?)しておく必要があるらしい。

参考) http://stackoverflow.com/questions/20549706/javascriptinterface-on-android-dont-work-with-apk-in-release-mode

-keep public class com.mypackage.MyClass$MyJavaScriptInterface
-keep public class * implements com.mypackage.MyClass$MyJavaScriptInterface
-keepclassmembers class com.mypackage.MyClass$MyJavaScriptInterface { 
    <methods>; 
}
-keepattributes JavascriptInterface
13
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
15