在MainActivity中,webview中使用了一个javascript的方法
webView.addJavascriptInterface(new MyWebViewHandler(), "handler");内部类MyWebViewHandler
public final class MyWebViewHandler{
@JavascriptInterface
public void showBody (String data){
System.out.println("调用showBody方法内容是........." + data);
}
@JavascriptInterface
public void showHeader (String data){
System.out.println("调用showHead方法内容是........." + data);
}
}debug版运行时是正常的,但是如果打包正式版混淆后该方法没有被调用,没有任何输出
原因:javascript是需要在混淆脚本中声明的,否则无效
解决方法:
-keepattributes *Annotation*
-keepattributes *JavascriptInterface*
-keep public class com.test.apk.MainActivity$MyWebViewHandler { //class后是完整的类名,$符后面是内部类的名称,下面是内部类中的两个方法声明
public void showBody (java.lang.String);
public void showHeder (java.lang.String);
}
本文介绍了解决Android应用中Webview与JavaScript交互方法在混淆后失效的问题。详细说明了如何通过修改混淆配置文件来保持这些方法的有效性。
157

被折叠的 条评论
为什么被折叠?



