我的项目在使用 proguard 进行混淆后因 javascriptinterface 失败
这是包含混淆器配置的一些建议的链接,但它在我的情况下不起作用
http://groups.google.com/group/android-developers/browse_thread/thread/f889e846fbf7ec3f?pli=1 http://groups.google.com/group/android-developers/browse_thread/thread/f889e846fbf7ec3f?pli=1
因此,来自 Javascript 的调用与关联的 Java 方法松散绑定
我的 proguard 配置与此相关
-keep public class com.trans_code.android.JavascriptCallback
-keep public class * implements com.trans_code.android.JavascriptCallback
-keepclassmembers class * implements com.trans_code.android.JavascriptCallback {
<methods>;
}
-keepclassmembers class * implements JavascriptCallback {
void on*(***);
}
-keep public class com.trans_code.** {
public protected *;
}
-keepclasseswithmembernames class com.MyActivity$JavascriptInterface
-keepclasseswithmembernames class com.MyActivity$JavascriptInterface {
public protected *;
}
如果有人知道如何配置混淆器以使其过滤掉相关的方法和类,这将对我有很大帮助
该原始线程中的类名特定于该用户 Java 类,而不是所有 javascript 接口通用的。您实现的 javascript 接口只是一个简单的基类。
您需要更改它们以匹配您的接口类的名称。
例如,根据原始线程中的示例,示例代码 WebViewDemo 的正确配置将是:
-keep public class com.google.android.webviewdemo.WebViewDemo.DemoJavaScriptInterface
-keep public class * implements com.google.android.webviewdemo.WebViewDemo.DemoJavaScriptInterface
-keepclassmembers class * implements com.google.android.webviewdemo.WebViewDemo.DemoJavaScriptInterface {
<methods>;
}
由于绑定的工作方式,真正需要做的就是防止从 javascript 调用的内部方法的名称被混淆,但防止类名被混淆也没什么坏处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)