Cordova模拟Android运行出现http://localhost:8100网络错误求助
解决方案
修正config.xml配置冲突
你当前config.xml中针对Application节点的两个edit-config配置分开编写会被Cordova合并覆盖,需整合为同一个配置块,同时补充调试域名权限:
<platform name="android"> <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android"> <application android:networkSecurityConfig="@xml/network_security_config" android:usesCleartextTraffic="true" /> </edit-config> <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" /> <!-- 补充本地调试的明文请求权限 --> <allow-navigation href="http://*/*" /> <allow-intent href="http://*/*" /> </platform>
全量清理后重新构建
依次执行以下命令清理残留缓存,避免旧配置未被替换:
# 删除所有构建缓存和依赖 rm -rf node_modules platforms plugins www package-lock.json # 重新安装依赖 npm install # 重新添加Android平台 ionic cordova platform add android@9.0.0
构建后手动确认platforms/android/app/src/main/AndroidManifest.xml的Application节点已经生成android:usesCleartextTraffic="true"和android:networkSecurityConfig="@xml/network_security_config"两个属性,同时检查res/xml/network_security_config.xml内容和你编写的一致。
适配热重载调试场景
你开启了-l热重载参数,Cordova Android 9+默认会用局域网IP作为调试地址,不属于默认的localhost白名单范围,可两种方式解决:
- 在
network_security_config.xml中补充你的本机局域网IP(比如192.168.1.100)到域名列表:
<domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">localhost</domain> <domain includeSubdomains="true">192.168.1.100</domain> </domain-config>
- 运行时新增
--no-native-run参数,规避运行工具的端口代理拦截:
ionic cordova emulate android -l --no-native-run
内容的提问来源于stack exchange,提问作者nogamawa
相关产品推荐
相关产品推荐

