Cordova [Android 平台] 从 API 29 迁移到 API 30

Cordova [Android platform] migration from API 29 to API 30

我正在尝试迁移我的移动应用程序(使用 Cordova 和 AngularJS 为 Android 和 iOS 平台开发),我遇到了一些来自 API 29 的问题到 API 30. 在我的应用程序中,我从 REST 服务下载一个 JSON 目录,其中包含我存储在数据目录 (cordova.file.dataDirectory) 中的分离图片(JPG 格式)。 使用 API 设置为 29 的应用构建,应用可以正常工作,下载图片并将它们显示在 HTML 页面中(更新为 AngularJS)。但是,如果我尝试将 API 设置为 30 来构建它,应用程序将继续工作(它会正确下载 json 和数据目录中的 jpg 文件)但不会显示存储在该目录中的图片。 我还尝试使用所有更新的组件(Cordova 10.0.0、Android 平台 10.0.0、插件等)创建一个新的简单移动应用程序,但我获得了相同的行为,但无法解决此问题。你能帮我解决一下吗?

信息应用构建 API 29

Cordova v8.1.2
Android 平台 v8.0.0

信息应用构建 API 30

Cordova v10.0.0
Android 平台 v10.0.0

插件列表

cordova-plugin-android-权限 1.0.2“权限”
cordova-plugin-camera 4.1.0“相机”
cordova-plugin-compat 1.2.0“兼容”
cordova-plugin-datepicker 0.9.3“DatePicker”
cordova-plugin-device 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“启动画面”
cordova-plugin-statusbar 2.4.3“StatusBar”
cordova-plugin-whitelist 1.3.4“白名单”
cordova-plugin-wkwebview-engine 1.2.1“Cordova WKWebView 引擎”
cordova-plugin-wkwebview-file-xhr 2.1.4“Cordova WKWebView 文件 XHR 插件”
cordova-sqlite-storage 5.0.0 "Cordova s​​qlite 存储插件 - cordova-sqlite-storage 插件版本"
离子插件键盘 2.2.1“键盘”
phonegap-plugin-mobile-accessibility 1.0.5-dev“移动辅助功能”

尝试添加到您的配置

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

Eric 建议的设置可能适合您,但不推荐这样做。新的 cordova-android 版本使用一个名为 WebViewAssetLoader 的 API 来加载您的应用程序到正确的 http(s) 方案而不是文件:。我怀疑您在下载数据时遇到了 CORS 问题。

阅读更多关于 Cordova 中的 WebViewAssetLoader 的信息:https://cordova.apache.org/announcements/2021/07/20/cordova-android-10.0.0.html

更好的方法是找出合适的 CORS 并且不使用 不安全 设置。您应该找到大量关于 CORS 的资源。如果您需要帮助,请回复。