2017-08-08 9 views
7

Chcę zainicjować Firebase za pomocą FirebaseOptions bez google-services.json, śledzę wpis na blogu tutaj: https://firebase.googleblog.com/2017/03/take-control-of-your-firebase-init-on.html.Init firebase with FirebaseOptions

Usunąłem FirebaseInitProvider.

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

Próbuję ustawić domyślny FirebaseApp w podklasie Zastosowanie:

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

FirebaseApp.initializeApp(getApplicationContext(), options); 

Wydaje wszystko ok, ale gdy chcę się zalogować pewne zdarzenia do FirebaseAnalytics, następnie uzyskać ten błąd: Brak google_app_id. Usługa Firebase Analytics wyłączona. Nie mam pojęcia, na czym polega problem.

+0

Prawdopodobny duplikat [Użyj wielu kont firebase w jednej aplikacji na Androida dla google analytics] (https://stackoverflow.com/questions/45546833/use-multiple-firebase-accounts-in-single-android-app-for- google-analytics) – ceph3us

Odpowiedz

-1

Jeśli nie korzystasz z pliku google-services.json, informacje znajdujące się w JSON muszą być gdzieś w kolejności, aby wtyczka/kod mógł zostać odczytany. Co można zrobić, o to, aby utworzyć plik xml ręcznie zasobu ciąg z następujących cech:

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 

Spójrz here. Pamiętaj, aby dodać google_app_id, ponieważ niepoprawne działanie może spowodować zgłoszenie błędu.

Jeśli nie masz „Narzędzia” nazw dodane do manifestu tagu głównego, trzeba dodać, że jak dobrze:

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

Reszta realizacji byłby taki sam używając FirebaseOptions i Firebase.InitializeApp().

+1

Czy naprawdę potrzebujemy tego pliku zasobów? Myślałem, że inicjowanie można wykonać w czasie wykonywania bez tego zasobu. Jeśli będę używał tego pliku zasobów, dlaczego opcja firebase jest potrzebna? Główną ideą jest zmiana analityki firebase w środowisku wykonawczym. – rMozes