Кордова [платформа Android] переход с API 29 на API 30

Я пытаюсь перенести свое мобильное приложение (разработанное с помощью Cordova и AngularJS для платформ Android и iOS), и у меня есть некоторые проблемы с API 29 на API 30. В моем приложении я загружаю из службы REST каталог JSON с разделенными изображениями (JPG формат), который я храню в каталоге данных (cordova.file.dataDirectory). При сборке приложения с API, установленным на 29, приложение работает нормально, загружая изображения и отображая их на странице HTML (обновленной с помощью AngularJS). Но если я попытаюсь создать его с API, установленным на 30, приложение продолжит работать (оно правильно загружает файлы json и jpg в каталог данных), но без отображения изображений, хранящихся в этом каталоге. Я также попытался создать новое простое мобильное приложение, используя все обновленные компоненты (Cordova 10.0.0, платформа Android 10.0.0, плагины и т. Д.), Но у меня такое же поведение, и я не могу решить эту проблему.Не могли бы вы мне помочь или у вас есть идея, как решить эту проблему?

Сборка информационного приложения с API 29

Кордова v8.1.2
Платформа Android v8.0.0

Сборка информационного приложения с API 30

Кордова v10.0.0
Платформа Android v10.0.0

Список плагинов

cordova-plugin-android-permissions 1.0.2 «Разрешения»
cordova-plugin-camera 4.1.0 «Camera»
cordova-plugin-compat 1.2.0 «Совместимость»
cordova-plugin-datepicker 0.9.3 «DatePicker»
cordova-plugin- устройство 2.0.3 «Устройство»
cordova-plugin-dialogs 2.0.2 «Уведомление»
cordova-plugin-file 6.0.2 «Файл»
cordova-plugin-file-hash 0.4.1 «FileHash»
cordova-plugin-filepath 1.5.8 "cordova-plugin-filepath"
cordova-plugin-geolocation 4.0.2 "Геолокация"
cordova-plugin-globalization 1.11.0 "Глобализация"
cordova-plugin-inappbrowser 3.2.0 "InAppBrowser"
cordova-plugin-network-information 2.0.2 "Сетевая информация "
cordova-plugin-sign-in-with-apple 0.1.2"cordova-plugin-sign-in-with-apple"
cordova-plugin-splashscreen 5.0.3 «Splashscreen»
cordova-plugin-statusbar 2.4.3 «StatusBar»
cordova-plugin-whiteelist 1.3.4 «Белый список»
cordova-plugin-wkwebview-engine 1.2.1 «Cordova WKWebView Engine»
cordova- plugin-wkwebview-file-xhr 2.1.4 "Плагин Cordova WKWebView для XHR"
cordova-sqlite-storage 5.0.0 "Плагин хранилища Cordova sqlite - версия плагина cordova-sqlite-storage"
ionic-plugin-keyboard 2.2.1 "Клавиатура"
phonegap-plugin-mobile-accessibility 1.0.5-dev "Доступность для мобильных устройств"

2 ответа

Попробуйте добавить в свой конфиг

       <preference name="AndroidInsecureFileModeEnabled" value="true" />

Настройка, предложенная Эриком, может вам подойти, но это не рекомендуется. Новая версия cordova-android использует API под названием WebViewAssetLoader для загрузки вашего приложения по правильной схеме http(s) вместо file:. Я подозреваю, что при загрузке данных у вас возникают проблемы с CORS.

Лучший способ - определить правильный CORS и не использовать небезопасную настройку. Вы должны найти множество ресурсов о CORS. Ответьте, если вам нужна помощь.

Другие вопросы по тегам