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>;
}