Android Proguard Javascript Interface Fail
2022-09-01 04:38:51
我在我的项目中使用了一段代码,如此处所述
http://lexandera.com/2009/01/extracting-html-from-a-webview/
我创建了.apk文件,将其安装在我的设备上,它就可以正常工作。如果我尝试使用带有proguard的混淆,项目将失败,则无法到达MyJavaScriptInterface的方法showHTML(String html)。
关于这一点,我的前卫配置
-keep public class com.mypackage.MyClass.MyJavaScriptInterface
-keep public class * implements com.mypackage.MyClass.MyJavaScriptInterface
-keepclassmembers class * implements com.mypackage.MyClass.MyJavaScriptInterface {
<methods>;
}
根据这个答案 Android proguard Javascript Interface 问题。
解决。
正如Eric所建议的那样,我像这样更改了Proguard配置文件:
-keep public class com.mypackage.MyClass$MyJavaScriptInterface
-keep public class * implements com.mypackage.MyClass$MyJavaScriptInterface
-keepclassmembers class com.mypackage.MyClass$MyJavaScriptInterface {
<methods>;
}
现在我的项目运行完美。
对于 API 17+,您还需要保留@JavascriptInterface注释:
-keepattributes JavascriptInterface
http://developer.android.com/reference/android/webkit/JavascriptInterface.html