JavascriptInterface 无法在 Android 5 上工作
JavascriptInterface not working on Android 5
我正在使用像 https://github.com/evgenyneu/js-evaluator-for-android 中的 WebView 在 WebView 中执行 java 脚本,然后 return 使用 @JavascriptInterface 注释方法将结果 java。
我在一个用 dexguard 混淆的库项目中这样做。
这在 android 7、6 和 5 上运行良好。我还在 android 应用程序中使用该库,它可以正常工作,但在使用 Proguard 时,它停止在 [=27 上运行=] 5,但仍然适用于 android 6.
我的目标是 SDK 24,最低是 8,但代码只在 21 及以上版本上使用。 @JavascriptInterface 注释和所有 类 免于混淆,但是,这仍然不适用于 Android 5 和 6。它确实适用于 7.
知道我做错了什么吗?
经过更多测试后,我可以得出结论,当我将发布构建类型设置为可调试时,它开始在发布上工作:
release {
minifyEnabled true
debuggable true
}
问题是我在服务中这样做,一些 webview 实现检查你是否 运行 在主循环器上。
我的一个解决方案是在主循环器上执行它:
this.handler = new Handler(Looper.getMainLooper());
this.handler.postDelayed(new Runnable()
{
@Override
public void run()
{
// create a webview
final WebView webView = new WebView(context);
// etc
}
});
我正在使用像 https://github.com/evgenyneu/js-evaluator-for-android 中的 WebView 在 WebView 中执行 java 脚本,然后 return 使用 @JavascriptInterface 注释方法将结果 java。
我在一个用 dexguard 混淆的库项目中这样做。
这在 android 7、6 和 5 上运行良好。我还在 android 应用程序中使用该库,它可以正常工作,但在使用 Proguard 时,它停止在 [=27 上运行=] 5,但仍然适用于 android 6.
我的目标是 SDK 24,最低是 8,但代码只在 21 及以上版本上使用。 @JavascriptInterface 注释和所有 类 免于混淆,但是,这仍然不适用于 Android 5 和 6。它确实适用于 7.
知道我做错了什么吗?
经过更多测试后,我可以得出结论,当我将发布构建类型设置为可调试时,它开始在发布上工作:
release {
minifyEnabled true
debuggable true
}
问题是我在服务中这样做,一些 webview 实现检查你是否 运行 在主循环器上。
我的一个解决方案是在主循环器上执行它:
this.handler = new Handler(Looper.getMainLooper());
this.handler.postDelayed(new Runnable()
{
@Override
public void run()
{
// create a webview
final WebView webView = new WebView(context);
// etc
}
});