【发布时间】:2016-09-20 08:39:25
【问题描述】:
我正在使用https://github.com/evgenyneu/js-evaluator-for-android 中的 WebView 在 WebView 中执行 javascript,并使用带有 @JavascriptInterface 注释的方法将结果返回给 java。
我在一个使用 dexguard 混淆的库项目中执行此操作。
这在 android 7、6 和 5 上运行良好。我也在一个 android 应用程序中使用该库,除了使用 Proguard 时,它在 Android 5 上停止运行,但在 android 6 上仍然有效。
我的目标是 SDK 24,最小值为 8,但代码仅用于 21 及更高版本。 @JavascriptInterface 注释和所有类都免于混淆,但这仍然不适用于 Android 5 和 6。它确实适用于 7。
知道我做错了什么吗?
经过更多测试后,我可以得出结论,当我将发布构建类型设为可调试时,它开始在发布上工作:
release {
minifyEnabled true
debuggable true
}
【问题讨论】:
-
您的 logcat 中是否有任何错误发布?
-
无关紧要。问题是,我在服务中使用了 js-evaluator-for-android,并且某些 webview 版本会在加载页面之前检查您是否在主循环器上。我不得不在主循环器上运行代码来解决这个问题。
-
@Elias:你找到解决方案了吗?至于为什么它不起作用。我面临同样的问题。谢谢
-
@sneha 它不起作用,因为某些 webview 实现会检查您的代码是否在主循环器中执行。
-
@Elias:谢谢!我能够解决这个问题。 :)
标签: javascript java android webview obfuscation