Unity中Admob与Firestore冲突致FirebaseApp初始化失败求助
问题回顾
在Unity中集成Admob和Firestore后,APK构建时遇到Manifest冲突错误:
property#android.adservices.AD_SERVICES_CONFIG@resource=@xml/gma_ad_services_config` in com.google.android.gms:play-services-measurement-api:22.1.2 collides with another value
添加tools:replace处理后构建成功,但Firestore无法使用,Logcat报错:
Default FirebaseApp failed to initialize because no default options were found.
解决方案
1. 修正AndroidManifest.xml配置
首先检查并修正之前添加的<property>标签,确保引号为英文,同时确认Manifest根标签包含tools命名空间:
<!-- 在<manifest>标签中添加tools命名空间 --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你的应用包名"> <!-- 修正后的AD_SERVICES_CONFIG配置 --> <property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/gma_ad_services_config" tools:replace="android:resource" /> </manifest>
该配置仅针对Admob的冲突项进行替换,避免影响Firebase的Manifest配置。
2. 确保google-services.json文件正确放置
从Firebase控制台下载对应应用包名的google-services.json文件,将其放置在Unity项目的Assets/Plugins/Android目录下。Unity会自动将该文件同步到Android构建项目中,Firebase依赖此文件完成初始化配置。
3. 手动初始化Firebase
若自动初始化失败,在Unity代码中添加手动初始化逻辑,确保依赖加载完成后再初始化Firestore:
using Firebase; using Firebase.Firestore; using UnityEngine; using System.Threading.Tasks; public class FirebaseSetup : MonoBehaviour { private void Start() { InitializeFirebase(); } private async void InitializeFirebase() { var dependencyStatus = await FirebaseApp.CheckAndFixDependenciesAsync(); if (dependencyStatus == DependencyStatus.Available) { // 初始化Firestore实例 FirebaseFirestore db = FirebaseFirestore.DefaultInstance; Debug.Log("Firebase及Firestore初始化成功"); } else { Debug.LogError($"Firebase依赖加载失败: {dependencyStatus}"); } } }
将此脚本挂载到启动场景的常驻GameObject上。
4. 清理并重新解析依赖
- 打开Unity的External Dependency Manager:
Window > Package Manager > External Dependency Manager > Android Resolver > Resolve,让工具自动处理依赖冲突,确保所有Firebase和Admob的依赖版本兼容。 - 移除gradle中重复的依赖项(例如
androidx.constraintlayout:constraintlayout出现了两次,保留其中一行即可)。
5. 清理构建缓存
- 在Unity中执行:
File > Build Settings > Android > Clean Build,清理旧的构建缓存。 - 进入
unityLibrary目录,运行命令gradlew clean清理Android项目缓存,之后重新构建APK。
内容的提问来源于stack exchange,提问作者Cemal Ok

