使用FirebaseOptions初始化firebase

rMo*_*zes 11 android firebase firebase-analytics

我想在没有google-services.json的情况下使用FirebaseOptions初始化Firebase,我正在关注此处的博客文章https://firebase.googleblog.com/2017/03/take-control-of-your-firebase-init-on. HTML.

我删除了FirebaseInitProvider.

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

我正在尝试在Application子类中设置默认的FirebaseApp:

FirebaseOptions options = new FirebaseOptions.Builder()
                .setApplicationId("valid_app_id")
                .setGcmSenderId("valid_gcm_sender_id")
                .setApiKey("valid_api_key")
                .build();

FirebaseApp.initializeApp(getApplicationContext(), options);
Run Code Online (Sandbox Code Playgroud)

似乎一切正常,但是当我想将一些事件记录到FirebaseAnalytics时,我收到此错误:缺少google_app_id.Firebase Analytics已停用.我不知道是什么问题.

Ani*_*niV -1

如果您不使用 google-services.json 文件,则 JSON 中存在的信息需要位于某个位置,以便插件/代码能够读取。您可以在此处使用具有以下属性的字符串资源手动创建 xml 文件:

google_app_id:

{YOUR_CLIENT}/client_info/mobilesdk_app_id
gcm_defaultSenderId:

project_info/project_number
default_web_client_id:

{YOUR_CLIENT}/oauth_client/client_id (client_type == 3)
ga_trackingId:

{YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id
firebase_database_url:

project_info/firebase_url
google_api_key:

{YOUR_CLIENT}/api_key/current_key
google_crash_reporting_api_key:

{YOUR_CLIENT}/api_key/current_key
Run Code Online (Sandbox Code Playgroud)

看看这里。确保添加google_app_id,没有它会导致出现相关错误。

如果您没有将“tools”命名空间添加到清单根标记中,则还必须添加它:

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="your.package"
    >
Run Code Online (Sandbox Code Playgroud)

其余的实现将与使用FirebaseOptions相同Firebase.InitializeApp().

  • 我们真的需要那个资源文件吗?我认为初始化可以在运行时完成,无需该资源。如果我要使用该资源文件,为什么需要 firebase 选项?主要思想是在运行时更改 firebase 分析。 (2认同)