Den*_*nis 38 java obfuscation android proguard
我在我的项目中使用了这里描述的一段代码
http://lexandera.com/2009/01/extracting-html-from-a-webview/
我创建.apk文件,将其安装在我的设备上,它正常工作.如果我尝试使用proguard的混淆项目失败,则不会到达MyJavaScriptInterface的方法showHTML(String html).
关于那个我的proguard配置
-keep public class com.mypackage.MyClass.MyJavaScriptInterface
-keep public class * implements com.mypackage.MyClass.MyJavaScriptInterface
-keepclassmembers class * implements com.mypackage.MyClass.MyJavaScriptInterface {
<methods>;
}
Run Code Online (Sandbox Code Playgroud)
根据这个答案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>;
}
Run Code Online (Sandbox Code Playgroud)
现在我的项目完美无缺.
对于API 17+,您还需要保留@JavascriptInterface注释:
-keepattributes JavascriptInterface
Run Code Online (Sandbox Code Playgroud)
http://developer.android.com/reference/android/webkit/JavascriptInterface.html
Eri*_*une 32
如果MyJavaScriptInterface是MyClass的内部类,ProGuard需要一个完全限定的名称com.mypackage.MyClass$MyJavaScriptInterface.命名约定$用于ProGuard运行的已编译类文件中.请注意,ProGuard在配置中提到了在输入jar中找不到的类名,表明这些名称可能拼写错误.
| 归档时间: |
|
| 查看次数: |
13145 次 |
| 最近记录: |