2017-08-08 16 views
7

Tôi muốn khởi chạy Firebase với FirebaseOptions mà không cần google-services.json, tôi đang theo dõi bài đăng blog tại đây https://firebase.googleblog.com/2017/03/take-control-of-your-firebase-init-on.html.Init firebase với FirebaseOptions

Tôi đã xóa FirebaseInitProvider.

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

Tôi cố gắng để thiết lập các FirebaseApp mặc định trong lớp Application:

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

FirebaseApp.initializeApp(getApplicationContext(), options); 

Có vẻ như tất cả mọi thứ ok, nhưng khi tôi muốn đăng nhập một số sự kiện để FirebaseAnalytics, sau đó tôi nhận được lỗi này: Thiếu google_app_id. Đã tắt Firebase Analytics. Tôi không biết vấn đề là gì.

+0

Bản sao có thể có của [Sử dụng nhiều tài khoản firebase trong ứng dụng Android đơn lẻ cho google analytics] (https://stackoverflow.com/questions/45546833/use-multiple-firebase-accounts-in-single-android-app-for- google-analytics) – ceph3us

Trả lời

-1

Nếu bạn không sử dụng tệp google-services.json, thông tin có trong JSON cần phải ở đâu đó để plugin/mã được đọc. Những gì bạn có thể làm ở đây là tạo ra một tập tin xml bằng tay với tài nguyên chuỗi với các thuộc tính sau:

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 

Hãy xem here. Đảm bảo thêm google_app_id, không có nó sẽ dẫn đến lỗi được đăng được đề cập.

Nếu bạn không có "công cụ" namespace thêm vào thẻ gốc biểu hiện của bạn, bạn sẽ phải thêm rằng cũng như:

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

Phần còn lại của việc thực hiện sẽ là tương tự sử dụng FirebaseOptionsFirebase.InitializeApp().

+1

Chúng tôi có thực sự cần tệp tài nguyên đó không? Tôi nghĩ rằng khởi tạo có thể được thực hiện tại thời gian chạy mà không có tài nguyên đó. Nếu tôi sẽ sử dụng tệp tài nguyên đó, tại sao cần tùy chọn firebase? Ý tưởng chính là thay đổi phân tích firebase khi chạy. – rMozes

Các vấn đề liên quan