Web视图具有由Web调用并用@JavascriptInterface注释的桥和方法。

该应用程序在没有Proguard的调试版本和发行版本中均可正常运行。但是当打开Proguard时,该应用程序不会从Web接收回调。

Web调用的Javascript方法也使用@Keep注释和webview桥类进行注释。
但是由于某些原因,android应用程序中的webview桥方法仍然无法调用。

编辑:
这是由Web运行的方法的代码。

     /**
     * This method gets called from the WebApp and logs the user
     * in the app using native Facebook Sign In implementation
     * in {@link MainActivity#initFacebookSignIn(String callback)}
     */
    @JavascriptInterface
    public void initFacebookSignIn(String callback) {
        activity.initFacebookSignIn(callback);
    }


有任何想法吗?

最佳答案

将这些规则添加到您的proguard:

-dontwarn javax.annotation.**
-keepattributes Signature
-keepattributes Exceptions
-keepattributes SetJavaScriptEnabled
-keepattributes JavascriptInterface
-keepattributes InlinedApi
-keepattributes SourceFile,LineNumberTable
-keepattributes *Annotation*

-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}

10-06 00:03