Как отключить удаленную отладку Android WebView в Ionic / Cordova

У меня есть приложение для Android, созданное на платформе Ionic / Cordova. По умолчанию удаленная отладка Android включена.

https://developers.google.com/web/tools/chrome-devtools/remote-debugging/

Это означает, что если устройство подключено к компьютеру, можно открыть браузер Chrome, перейти на страницу chrome: // inspect, найти список веб-страниц или приложения с веб-просмотрами, нажать «Проверить» и просмотреть HTML, JS и другие ресурсы приложений. . Это нормально для отладки, но я бы хотел отключить это в выпущенном приложении.

Пытаясь отключить это (или найти, где оно было включено), я обнаружил, что есть функция

@TargetApi(Build.VERSION_CODES.KITKAT)
private void enableRemoteDebugging() {
    try {
        WebView.setWebContentsDebuggingEnabled(true);
    } catch (IllegalArgumentException e) {
        LOG.d(TAG, "You have one job! To turn on Remote Web Debugging! YOU HAVE FAILED! ");
        e.printStackTrace();
    }
}

в SystemWebViewEngine.java в каталоге Cordova.

Есть ли конфигурация, которую можно настроить, или другой способ отключить это?


person shadowcursor    schedule 16.11.2016    source источник


Ответы (2)


Когда вы выпускаете подписанное приложение, отладка отключается. Вы можете проверить, запустив приложение с:

cordova run android --release -- --keystore=../my-release-key.keystore --storePassword=password --alias=alias_name --password=password

Подписание приложения

Или вы можете установить android:debuggable="false" в <application> вашего AndroidManifest.xml и просто запустить приложение с помощью: cordova run android

chrome-remote-debugging

person isma3l    schedule 20.11.2016
comment
Выполнение всех этих шагов по-прежнему приводит к появлению окна проверки. Также кажется, что установка android:debuggable="false" устарела. Установка приложения даже непосредственно из магазина Google Play также приводит к появлению окна проверки. Приложение должно быть правильно подписано, чтобы быть в Play Store. - person shadowcursor; 21.11.2016
comment
android: debuggable = false не является устаревшим (developer.android.com/guide / themes / manifest /), большинство инструментов добавляют это значение автоматически при отладке или выпуске. Проверьте developer.android.com/studio/publish/preparing.html (Включите выкл логирование и отладку). Возможно, ваша проблема в том, что какой-то плагин cordova добавляет атрибут в true. Вы должны проверить манифест в созданном apk. - person isma3l; 21.11.2016
comment
запуск сборки cordova с установленным флагом android:debuggable="false" дает этот результат .../AndroidManifest.xml:9: Error: Avoid hardcoding the debug mode; leaving it out allows debug and release builds to automatically assign one [HardcodedDebugMode] - person shadowcursor; 21.11.2016
comment
Ты прав, @ isma3l. Выяснилось, что подключаемый модуль github.com/jsHybugger/cordova-plugin-jshybugger вызывал удаленную в любом случае должна быть включена отладка. - person shadowcursor; 24.11.2016

По умолчанию веб-просмотр Android не может быть отлажен. Cordova открывает отладку, когда приложение является отлаживаемым, что настраивается в AndroidManifest.xml. Код ниже:

public class SystemWebViewEngine implements CordovaWebViewEngine {
    private void initWebViewSettings() {
        ApplicationInfo appInfo = webView.getContext().getApplicationContext().getApplicationInfo();
        if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0 &&
            android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
            enableRemoteDebugging();
        }
    }
}

Таким образом, webview в ionic можно отладить в отладочной сборке и не отладить в сборке выпуска.

person Zebulon Li    schedule 19.04.2018