【发布时间】:2012-11-30 08:35:31
【问题描述】:
自 android 4.2 以来我遇到了一个带有 proguard 的问题。
基本上我在这样的 webview 上使用 JavascriptInterface:
public class MyJavascriptInterface {
public void doSomething() { ... }
}
现在我明白的是,当 proguard 混淆代码时,它会重命名类名和方法名,因此不能再从 Javascript 调用它。这就是为什么我必须将它添加到 proguard 配置中:
-keepclassmembers class mypackage.MyJavascriptInterface {
public void doSomething();
}
当我将目标 sdk 设置为 17 (Android 4.2) 时,出于安全原因,我必须将 @JavascriptInterface 注释添加到我的 Javascript 接口方法中:
@JavascriptInterface
public class MyJavascriptInterface {
public void doSomething() { ... }
}
现在的问题是,如果启用了 proguard,这将不再起作用(doSomething 不会被调用,就好像在混淆步骤中仍然重命名了类一样)。 如果我禁用 proguard,则代码可以正常工作。
如何使用目标 sdk 17 进行这项工作?
【问题讨论】:
-
对我来说,javascript接口函数没有被调用,请告诉我该怎么办???
-
Can't say with this description of your problem...你可以打开一个新问题并详细描述你的设置,也许发布相关的android和javascript代码;)
标签: android android-webview proguard