Cordova Android App - Работает на Android 7,8,9; Сбой на Android 4,5 и 6 - PullRequest
0 голосов
/ 03 апреля 2020

Это была чудовищная головная боль, пытающаяся выяснить, что происходит.

У меня есть приложение android, которое я разрабатывал и поддерживаю. Мои последние тестовые устройства работают на android 9 и без проблем запускают приложение. Многие из файлов, с которыми у меня в настоящее время возникают проблемы, были частью этого проекта, когда эти ОС были в расцвете популярности.

Чтобы поддерживать широкий диапазон совместимости, я нацеливаюсь на запуск этого приложения на android с 5 по 9

Шаги по отладке

  1. Я приступил к обновлению плагинов, которые могут вызывать проблему
  2. Тест на реальном оборудовании и эмуляции
  3. Заменить let на var
  4. Добавлено ведение журнала консоли для просмотра полных трасс трассировки

Ошибки

  1. Вкл. Android 4,5,6, когда он пытается загрузить jquery-1.8.1.js, он возвращает ошибку, приведенную ниже, из-за которой все приложение обрабатывает sh. Трассировка стека кажется довольно бесполезной.

Uncaught SyntaxError: Неожиданный токен =

Трассировка стека

Stack Trace

Вкл. 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 Требования

Целевые версии

Target Versions

1 Ответ

0 голосов
/ 15 апреля 2020

После четырех долгих ночей и целого дня, проведенного позже, я выяснил, в чем проблема.

Я получаю ошибки не из jquery -1.8.1, а из jquery метания ошибка, возникающая при загрузке других файлов js, которые не совместимы с es5.

Проблема не в плагинах и версии платформы, я воспользовался новыми замечательными функциями, которые не поддерживаются в старых браузерах.

Примеры:

  • let вместо var, так что память освобождается быстрее
  • Добавление переменных по умолчанию к сигнатурам функций
  • Отсутствует или дополнительно ;
  • Использование ` для блоков строк

Также было несколько функций строк и массивов, которых не было в старых браузерах.

Используя JavaScript присущую гибкость, я могу добавить их обратно, используя технику, известную как polyfill.

Кричать:

  • TJ Crowder, помог мне сосредоточиться на истинной проблеме ,
    • его пост: { ссылка }
    • Мой лицевой щиток был измерен по шкале Рихтера

Источники для полифилла :

...