You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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类。

解决步骤:

  1. 卸载已安装的白名单插件:
    cordova plugin remove cordova-plugin-whitelist
    
  2. 清理并重新添加安卓平台(避免残留冲突文件):
    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跳转和页面跳转):
    <allow-navigation href="*" />
    
    如果你只想允许特定域名,比如JSON接口和iframe域名:
    <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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 01:38:14