【发布时间】:2013-07-11 20:34:54
【问题描述】:
我已经实现了一个使用 JavascriptInterface 的 Webview。它在不混淆时工作正常,但一旦 Proguard 处于活动状态,它就不起作用。我在这里查看了其他答案,但仍然无法正常工作。
一些WebView类:
public class Activity_Webview {
private WebView webView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavaScriptInterface (), "HTMLOUT");
webView.setWebViewClient(mWebViewClient);
}
public class JavaScriptInterface implements NonObfuscateable{
@JavascriptInterface
public void processHTML(String html) {
handleFinishFromWebView(html);
}
}
我在 Proguard 中的尝试:
-keep public class * implements com.project.NonObfuscateable
-keepclassmembers class * implements NonObfuscateable {
public void processHTML(java.lang.String);
}
我也试过这个(没有实现 NonObfuscateable 接口时:
-keep public class com.project.Activity_Webview.JavaScriptInterface
-keep public class * implements com.project.Activity_Webview.JavaScriptInterface
-keepclassmembers class * implements com.project.Activity_Webview.JavaScriptInterface {
<fields>;
<methods>;
}
有人知道可能出了什么问题吗? 提前致谢
【问题讨论】:
-
不知道为什么我在 Android Studio 4.1.2 中使用默认的 proguard-rule.pro 文件(似乎没有设置任何内容),并且在使用 minifyEnabled=true 构建之后一切正常。
标签: android obfuscation proguard