Firebase SDK 一个 apk 中的多个项目

pau*_*ius 5 android firebase-analytics

我正在尝试初始化 FirebaseApp,仅使用 FirebaseOptions 构建器,就像这样(我只使用 applicationId 和 ApiKey,因为我只想要开始分析):

FirebaseOptions options = new FirebaseOptions.Builder()
.setApplicationId(applicationID) // Required for Analytics.
.setApiKey(apiKey) // Required for Auth.
.build();
FirebaseApp.initializeApp(context, options);
Run Code Online (Sandbox Code Playgroud)

我的项目中没有 google-services.json 文件,我在 AndroidManifest.xml 中删除了 FirebaseInitProvider,如下所示:

<provider android:name="com.google.firebase.provider.FirebaseInitProvider"
   android:authorities="${applicationId}.firebaseinitprovider"
   android:exported="false"
   tools:node="remove"/>
Run Code Online (Sandbox Code Playgroud)

我想从我的服务器发送应用程序 id,因为我想要多个项目,而且我真的不在乎我是否在应用程序初始化期间丢失了某些事件。启动应用程序时,尝试在 Android Studio 调试日志中查看事件,如下所示:

adb shell setprop log.tag.FA VERBOSE

adb shell setprop log.tag.FA-SVC VERBOSE

adb logcat -v time -s FA FA-SVC

我得到: Missing google_app_id. Firebase Analytics disabled.

我不想在strings.xml静态文件中使用 google_app_id,因为我想要多个项目。但是,我尝试在 XML 文件中包含所有应用程序 ID,并尝试在 FirebaseApp.initializeApp 之前使用反射更改它们,但这似乎不起作用。

Mar*_*ler 1

默认 初始化FirebaseApp看起来像这样(在不传递名称时使用):

FirebaseApp fb = FirebaseApp.initializeApp(context, options, "[DEFAULT]");
Run Code Online (Sandbox Code Playgroud)

FirebaseOptions默认应用程序实例使用的值是从字符串资源中读取的

但是......可以改为分配自定义名称,以免字符串资源中读取:

FirebaseApp fb01 = FirebaseApp.initializeApp(context, options, "primary");
FirebaseDatabase db01 = FirebaseDatabase.getInstance(fb01);

FirebaseApp fb02 = FirebaseApp.initializeApp(context, options, "secondary");
FirebaseDatabase db02 = FirebaseDatabase.getInstance(fb02);
Run Code Online (Sandbox Code Playgroud)

找到了这个Firebase 博客,这是所请求的可靠来源。

FirebaseApp的文档也大致解释了这一点。