靶向SDK当我在我的机器人工程定制的网页视图,如下所示:Proguard的乱七八糟的Javascript接口功能在Android清单以上17
public class MyWebView extends WebView {
public MyWebView(Context context) {
super(context);
}
public class JsObject {
@JavascriptInterface
public void show() {
//...
}
@JavascriptInterface
public void hide() {
//....
}
}
包括JavascriptInterface
我使用与JavaScript侧连通Android方面。
在AndroidManifest我有以下
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
在我用proguard的项目宣告:
-keepattributes JavascriptInterface
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
,一切工作正常。
但是,当我将AndroidManifest更改为android:targetSdkVersion=18
或19
并在18或更高版本的设备上测试时,proguard似乎弄乱了无法访问的JavaScript方法。
如果我放回16或小于17的任何东西一切正常。此外,这只发生在proguard中。如果我不使用proguard,即使使用android:targetSdkVersion=18
或19,一切都可以正常工作。任何人都可以帮助使其在清单Android> 17中定位时正常工作吗?
'@ JavascriptInterface'在SDK级别17中引入。您将收到注释无法解析的编译错误,并且通过删除它,Proguard将找不到任何匹配项并删除所有方法。你确定最后一段准确地描述你的问题吗? –
保罗谢谢你的回复。是的,我知道SDK级别17中引入了@JavascriptInterface。我已经使用了这个方法好几个月,一切正常。只有这个更改android:targetSdkVersion = 18或19在清单中只是在运行时混淆了proguard和javascript接口。 Proguard在任何情况下编译都没问题,没有报告错误或警告! – andreasv
@andreasv我有我的JavaScript界面完全相同的问题。编译的应用程序在api 17级以下的设备上工作正常,但不能在果冻豆和以上。此外,我在我的应用程序中加入了appbrain sdk,并且还提供了检查proguard配置的警告。就好像JavaScript在整个应用程序中关闭一样。没有proguard它工作正常。 我花了我整整一天,并尝试每一个解决方案建议在stackoverflow和他们都没有工作。你解决了这个问题吗? 请帮助家伙! – StarWars