0

我有一个带有一些 Javascript 界面的 Webview

public class WebAppInterface {
    @JavascriptInterface
    void buttonClick() {
        listener.onButtonClicked();
    }
}

这就是它添加到视图中的方式

webView.addJavascriptInterface(new WebAppInterface(), "Android");

在调试构建中,侦听器正在工作。

在 Jenkins 制作的发布版本中,它不起作用。

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "terminal_${variant.versionName}.apk"
                }
            }
        }
    }

它不应该与 Proguard 相关,因为 minify 已禁用。

无论如何,我尝试了不同的Proguard 设置,但没有帮助。

如何使其在发布版本中工作?

4

1 回答 1

0

公开接口方法解决了这个问题

public void buttonClick() {
        listener.onButtonClicked();
    }

如果您将 targetSdkVersion 设置为 17 或更高,则必须将 @JavascriptInterface 注释添加到您希望 JavaScript 可用的任何方法(该方法也必须是公共的)。 https://developer.android.com/guide/webapps/webview#BindingJavaScript

于 2019-04-17T20:15:13.880 回答