嵌入式Cordova应用包跳转Chrome而非在Android应用内加载如何解决
问题根因分析
本地资产加载失败(对应logcat报错)
该报错是触发后续跳转Chrome的前置条件,核心诱因如下:
- Git符号链接解析失败:你的原生项目
main/res/assets/www通过Git symlink关联到Cordova项目的www目录,若开发环境为Windows、或Android Studio/Git未开启symlink支持,构建APK时该软链接会被识别为普通文本文件,不会将Cordova项目的www资源打包进APK的asset分区,导致运行时报错net::ERR_FILE_NOT_FOUND file:///android_asset/www/index.html was not found。 - 资源路径配置错误:Android原生项目的资产默认存放路径为
src/main/assets/,你将www目录放在main/res/assets/下不符合Android构建规则,资源不会被打包进最终APK。
触发Chrome打开URL的根因
当Cordova无法加载本地入口文件、转向加载远程应用包URL时,触发了系统浏览器调用,核心原因如下:
- Cordova导航白名单未配置:
config.xml中未将远程应用包的域名添加到<allow-navigation>规则中,Cordova内核默认会将非白名单的URL抛给系统外部应用打开。 - WebView加载规则未拦截:你嵌入的Cordova WebView未重写
shouldOverrideUrlLoading方法,未拦截URL加载请求强制在WebView内部加载,系统会自动触发Intent跳转至默认浏览器。
内容的提问来源于stack exchange,提问作者Mark McClelland
相关产品推荐
相关产品推荐

