【问题标题】:Javascript interface not working in release buildJavascript接口在发布版本中不起作用
【发布时间】:2019-04-16 20:35:47
【问题描述】:

我有一个带有一些 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 settings,但没有帮助。

如何让它在发布版本中工作?

【问题讨论】:

    标签: javascript android jenkins webview release-builds


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2022-10-21
      • 2016-09-07
      • 2019-04-01
      • 1970-01-01
      相关资源
      最近更新 更多