赞
踩
最近公司项目主要面向海外发布,有统计分析的需求,TalkingData
的统计功能稍显薄弱,决定接入 Firebase
,应对全球市场。
于是按照 Firebase
官方文档,接入 Unity 版本的的 Firebase SDK
,接入过程中也有一些小问题,比如与已经介入的 Admob
和其他中介广告联盟SDK之间的冲突,但这些不是本文的重点,再次不赘述。一番折腾后 Firebase 后台成功接收到了统计数据,接入完成。
第一个项目就这样上线了,然后开始了第二个项目,SDK 的需求是一样的,于是我从项目1
中,复制了所有SDK相关文件,放入项目2
中,将所有SDK的参数重新配置了一遍,打出APK包,看似一切顺利。
但是将项目2
安装到装有项目1
的测试机上,安装失败了。
AndroidManifest.xml
文件中的 package
属性,以及 build.gradle
文件中的 applicationId
属性。provider
属性,android:authorities
的值一般为 应用包名
+.
+ SDK provider名
组成。Android Gradle
工程,确认包名配置,配置是正确的。google-services.json
和 google-services.xml
文件,只有 xml 会作为资源打包,两个项目中的配置都是各自不同的参数,而且资源并不会导致 apk 安装冲突。AndroidManifest.xml
,其中也只配置了 Firebase 的插件包名,并没有找到 provider 相关的值。 项目2
中的 Firebase SDK 文件进行以下操作: GoogleMobileAdsPlugin
插件,根据 Editor/xxxxDependencies.xml
文件的配置自动导入到项目中的。看上去都是Google和Firebase的基础库。 com.google.firebase.firebase-common-16.0.0.aar
。 AndroidManifest.xml
文件,终于看到了期望的内容: 项目1
中复制过来的,此处的包名依然是项目1
的包名,显然这个文件是自动导入的过程中,自动针对项目做了修改重打包,修改这个文件,并覆盖到原aar中,打包,测试,问题解决。因为偷懒复制了已经接好SDK的工程中的SDK文件到新工程中,导致新工程中的com.google.firebase.firebase-common-16.0.0.aar
依旧配了旧工程的包名,最终导致冲突无法安装,可以说是一场闹剧。
Firebase自动导入的库文件,并非原封不动的标准库,在导入过程中正针对项目自动做了参数配置和重打包处理,如果对新项目是按照标准流程进行重新接入,就不会出现这个问题了。
但由于接入的SDK众多,为了方便,还是复制接好的到新工程中更为方便,只是以后都需要记得修改这个文件中的provider android:authorities
的属性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。