cordova-android@12外部资源加载问题及白名单插件安装报错求助
解决Cordova Android 12.0.0下白名单插件兼容及外部资源加载问题
一、先解决编译错误(Whitelist类找不到)
你的编译错误根源是cordova-plugin-whitelist 1.3.5与cordova-android 12.0.0不兼容——cordova-android 10.0.0及以上版本已经将白名单功能集成到核心代码中,不再需要单独安装cordova-plugin-whitelist插件,旧插件的代码会和新版核心冲突,导致找不到Whitelist类。
解决步骤:
- 卸载已安装的白名单插件:
cordova plugin remove cordova-plugin-whitelist - 清理并重新添加安卓平台(避免残留冲突文件):
cordova platform remove android cordova platform add android@12.0.0
二、配置安卓端外部资源加载权限(JSON/iframe)
PC端正常但安卓端失效,是因为Cordova安卓平台需要明确配置允许访问的外部资源,在config.xml和index.html中做以下设置:
1. 配置config.xml白名单
在config.xml中添加或修改以下标签:
- 允许网络访问指定域名(替换为你的实际域名,
*代表允许所有):<access origin="*" /> - 允许导航到外部域名(控制iframe跳转和页面跳转):
如果你只想允许特定域名,比如JSON接口和iframe域名:<allow-navigation href="*" /><access origin="https://your-json-api.com/*" /> <allow-navigation href="https://your-iframe-domain.com/*" />
2. 配置Content-Security-Policy(CSP)
在index.html的<head>中添加CSP meta标签,明确允许加载外部JSON和iframe:
<meta http-equiv="Content-Security-Policy" content=" default-src 'self' https://your-json-api.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-eval'; frame-src https://your-iframe-domain.com; img-src 'self' data:; ">
default-src指定允许加载脚本、样式、数据等的域名,包含你的JSON接口域名frame-src指定允许嵌入的iframe域名- 如果需要允许所有资源,可简化为:
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-eval'; frame-src *;">
3. 确认网络权限
确保platforms/android/app/src/main/AndroidManifest.xml中存在网络权限(Cordova默认会自动添加,若缺失手动添加):
<uses-permission android:name="android.permission.INTERNET" />
三、验证修复
完成以上配置后,重新编译并运行应用:
cordova build android cordova run android
内容的提问来源于stack exchange,提问作者Lucken N'landou
相关产品推荐
相关产品推荐

