Unity打包Android报TargetInvocationException及Firebase失效问题
问题现象
- 触发环境:Unity 2022.1.0b2版本
- 触发场景:执行Android平台打包、Android依赖Force Resolve操作时抛出异常
- 核心异常信息:
Job failed with exception:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidOperationException: Insecure connection not allowed
- 伴随控制台警告:
Non-secure network connections disabled in Player Settings - 关联功能表现:
- 集成的Unity ADS、Unity IAP在编辑器环境、Android打包后均运行正常
- 集成的Firebase Database、Firebase Authentication在编辑器内运行完全正常,但打包为Android安装包上架Google Play后完全失效,无法加载排行榜、不显示注册/登录入口
- 历史操作:此前Android打包曾出现报错过多问题,通过删除可自动重建的Plugins文件夹解决,之后出现本次异常
根因分析
Unity 2022.1版本对Android平台默认启用严格网络安全策略,全局禁止非HTTPS的明文HTTP连接。此前删除Plugins文件夹重建的操作,清空了Firebase、Android Resolver生成的网络配置与依赖缓存,触发两个连锁问题:
- Android Resolver默认配置下会通过HTTP连接拉取Gradle依赖,被系统网络策略直接拦截,导致resolve、打包流程抛出异常
- Firebase SDK在Android端的网络安全配置丢失后,初始化时会尝试通过HTTP回源拉取项目配置,被系统拦截后初始化失败,直接导致认证、数据库功能全量失效;Unity ADS、IAP本身默认全走HTTPS请求,不受该策略影响。
分步解决方案
1. 修复打包/依赖解析阶段的连接拦截问题
- 打开菜单栏
Edit > Project Settings > Player,切换到Android平台标签页,展开Other Settings > Configuration板块 - 找到
Internet Access选项,设置为Require,不要选择Auto模式 - 找到
Allow downloads over HTTP选项,临时设置为Allowed in development builds,先保证resolve、打包流程可正常执行(后续上架前需要改回合规配置) - 打开
Assets > External Dependency Manager > Android Resolver > Settings,勾选Use HTTPS for gradle downloads,强制依赖解析全走HTTPS连接,从根源避免解析时触发明文连接拦截
2. 修复Firebase Android端初始化失效问题
- 打开
Assets/Plugins/Android路径,删除所有Firebase相关的.aar、.xml文件,不要改动其他SDK的文件 - 重新导入对应版本的Firebase Unity SDK(不要使用UPM渠道分发的版本,2022.1.0b2测试版与UPM版Firebase存在已知兼容问题,使用官方.unitypackage安装包导入即可)
- 将Firebase控制台下载的
google-services.json配置文件放到Assets文件夹根目录,等待Android Resolver自动执行依赖解析 - 解析完成后打开
Assets/Plugins/Android/AndroidManifest.xml,确认<application>标签下存在自动生成的android:networkSecurityConfig="@xml/network_security_config"属性 - 检查
Assets/Plugins/Android/res/xml路径下是否存在network_security_config.xml文件,若不存在则手动新建,填入以下配置:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="false"> <trust-anchors> <certificates src="system" /> </trust-anchors> </base-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">localhost</domain> </domain-config> </network-security-config>
3. 上架前合规校验
- 回到Player Settings的Android配置页,将
Allow downloads over HTTP选项改回None,符合Google Play的上架政策要求 - 执行一次Force Resolve,确认控制台不再抛出
Insecure connection not allowed异常 - 打Development Build包连接真机测试,确认Firebase认证、数据库功能正常加载后,再打Release包提交上架
内容的提问来源于stack exchange,提问作者Ariel Developer
相关产品推荐
相关产品推荐

