JavascriptInterface无法在Android 5上运行

时间:2016-09-20 08:39:25

标签: javascript java android webview obfuscation

我在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上工作。

知道我做错了吗?

经过更多测试后,我可以得出结论,当我发布buildtype buildgable时,它开始处理发布:

release {
        minifyEnabled true
        debuggable true
}

1 个答案:

答案 0 :(得分:0)

问题是我在服务中执行此操作,并且一些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
        }
    });