Javascript интерфейс не работает в сборке релиза - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть веб-представление с некоторым интерфейсом Javascript

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 В любом случае, это не помогло.

Как заставить его работать в сборке релиза?

1 Ответ

0 голосов
/ 17 апреля 2019

Публичный метод интерфейса решил проблему

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

Если вы установили targetSdkVersion на 17 или выше, вы должны добавить Аннотация @JavascriptInterface для любого метода, который вы хотите использовать на ваш JavaScript (метод также должен быть публичным). https://developer.android.com/guide/webapps/webview#BindingJavaScript

...