Это была чудовищная головная боль, пытающаяся выяснить, что происходит.
У меня есть приложение android, которое я разрабатывал и поддерживаю. Мои последние тестовые устройства работают на android 9 и без проблем запускают приложение. Многие из файлов, с которыми у меня в настоящее время возникают проблемы, были частью этого проекта, когда эти ОС были в расцвете популярности.
Чтобы поддерживать широкий диапазон совместимости, я нацеливаюсь на запуск этого приложения на android с 5 по 9
Шаги по отладке
- Я приступил к обновлению плагинов, которые могут вызывать проблему
- Тест на реальном оборудовании и эмуляции
- Заменить
let
на var
- Добавлено ведение журнала консоли для просмотра полных трасс трассировки
Ошибки
- Вкл. Android 4,5,6, когда он пытается загрузить
jquery-1.8.1.js
, он возвращает ошибку, приведенную ниже, из-за которой все приложение обрабатывает sh. Трассировка стека кажется довольно бесполезной.
Uncaught SyntaxError: Неожиданный токен =
Трассировка стека
Вкл. Android 5,6
Uncaught SyntaxError: Объявления в области блока (let, const, function, class) еще не поддерживаются вне строгого режима
Я предполагаю, что это связано с возрастом ОС. Не уверен, как включить строгий режим для всего приложения или даже если это хорошо. В настоящее время я заменил все let
на var
, чтобы обойти проблему. Не мое предпочтительное решение, если у вас есть лучшее решение, пожалуйста, дайте мне знать.
Настройка
Ide
vsCode Android Studio: (Не уверен, почему один из них может сделать оба) * 3.6.1 для Эмуляторов под управлением x86 * 3.4.0 для подключения к моему тестовому устройству
Тестовые устройства
- Samsung Galaxy 9 - Android 9 - Работает
- HT C 10 - Android 8 - Работает
- HT C Один - Android 6 - Не работает
- Raspberry Pi 2 - Android 5 - Все еще загружается. lol: '(
Тестовые эмуляторы
Все с использованием профиля оборудования для LGVK700 и работающего x86_64
- Android 9 - Работает
- Android 8 - Работает
- Android 7 - Работает
- Android 6 - Отказы
- Android 5 - Отказы
- Android 4 - Сбои
Файлы настроек
Это работает на Cordova 8.1.2 (cordova-lib@8.1.1)
config. xml:
<preference name="android-minSdkVersion" value="19" />
<preference name="android-targetSdkVersion" value="28" />
Плагины и платформы Cordova
$ cordova plugins
cordova-android-support-gradle-release 2.0.1 "cordova-android-support-gradle-release"
cordova-plugin-actionsheet 2.3.3 "ActionSheet"
cordova-plugin-appminimize 1.0.1 "AppMinimize"
cordova-plugin-camera 4.0.3 "Camera"
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-dialogs 2.0.1 "Notification"
cordova-plugin-file 6.0.1 "File"
cordova-plugin-file-opener2 2.2.0 "File Opener2"
cordova-plugin-file-transfer 1.7.1 "File Transfer"
cordova-plugin-geolocation 4.0.1 "Geolocation"
cordova-plugin-inappbrowser 3.2.0 "InAppBrowser"
cordova-plugin-media-capture 3.0.2 "Capture"
cordova-plugin-network-information 2.0.1 "Network Information"
cordova-plugin-save-image 0.3.0 "SaveImage"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
uk.co.workingedge.phonegap.plugin.launchnavigator 4.2.2 "Launch Navigator"
$ cordova platforms
Installed platforms:
android 8.1.0
ios 5.0.1
Поддержка
Я убедился, что Cordova должна поддерживать 4.4, 5 и 6
Android Требования
Целевые версии