升级至Cordova 12后Android编译出现低版本白屏问题
Cordova 12 Android 10以下版本白屏问题解决方案
降级cordova-android版本
Cordova 12默认配套的cordova-android@12.x对Android 9及以下版本的系统WebView兼容性较差,可尝试降级到更稳定的11.x版本:cordova platform remove android && cordova platform add android@11.0.0配置Android WebView兼容参数
在项目根目录的config.xml中添加针对低版本Android的配置:
<platform name="android"> <preference name="AndroidXEnabled" value="true" /> <preference name="WebViewEngine" value="system" /> <preference name="OverrideUserAgent" value="Mozilla/5.0 (Linux; Android %s) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/%s Mobile Safari/537.36" /> <config-file parent="/manifest/application/activity[@android:name='MainActivity']" target="AndroidManifest.xml"> <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing" android:value="false" /> <android:hardwareAccelerated="false" /> </config-file> </platform>
- 添加Polyfill并修正TS编译配置
仅修改tsconfig的target不足以解决低版本浏览器的API缺失问题,需补充Polyfill:
- 安装依赖:
npm install core-js@3 - 在项目入口文件(如
main.ts)顶部引入:
import 'core-js/stable'; import 'regenerator-runtime/runtime';
- 确保
tsconfig.json配置正确:
{ "compilerOptions": { "target": "es5", "lib": ["es2015", "dom"], "module": "esnext", "moduleResolution": "node", "esModuleInterop": true } }
查看设备日志定位具体报错
通过ADB命令抓取低版本设备的WebView日志,定位白屏的具体原因:adb logcat | grep WebView
根据日志中提示的未支持API,针对性添加Polyfill或修改代码。放宽内容安全策略(CSP)
若CSP设置过于严格,低版本WebView可能无法加载资源,可在index.html中调整:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline' 'unsafe-eval' data: gap:; style-src 'self' 'unsafe-inline'; media-src *">
内容的提问来源于stack exchange,提问作者Michel TANGA
相关产品推荐
相关产品推荐

