2017-08-08 237 views
7

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

我删除了FirebaseInitProvider。

<provider 
    android:name="com.google.firebase.provider.FirebaseInitProvider" 
    android:authorities="${applicationId}.firebaseinitprovider" 
    tools:node="remove"/> 

我想设置默认FirebaseApp在应用程序子类:

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

FirebaseApp.initializeApp(getApplicationContext(), options); 

,似乎一切就OK了,但是当我想记录一些事件FirebaseAnalytics,然后我得到这个错误:缺少google_app_id。 Firebase Analytics已停用。 我不知道是什么问题。

+0

可能的重复[在单个Android应用中使用多个Firebase帐户进行谷歌分析](https://stackoverflow.com/questions/45546833/use-multiple-firebase-accounts-in-single-android-app-for- google-analytics) – ceph3us

回答

-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 

看看here。请务必添加google_app_id,不要导致发布问题时发生错误。

如果没有“工具”命名空间添加到您的清单根标签,你就必须补充一点,还有:

<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    package="your.package" 
    > 

实施的休息会使用FirebaseOptionsFirebase.InitializeApp().是相同的

+1

我们真的需要这个资源文件吗?我认为初始化可以在没有该资源的运行时完成。如果我将使用该资源文件,为什么需要Firebase选项?主要想法是在运行时更改Firebase分析。 – rMozes