0

未能在應用程序啓動時,下面的正在打印到控制檯:火力地堡API初始化啓動時

Firebase API initialization failure.               
java.lang.reflect.InvocationTargetException 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.google.firebase.FirebaseApp.zza(Unknown Source) 
    at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
    //.. 
Caused by: java.lang.IllegalAccessError: Method 'void android.support.v4.content.ContextCompat.<init>()' is inaccessible to class 'com.google.firebase.iid.zzg' 

火力地堡的設置做如下說明:

  1. classpath 'com.google.gms:google-services:3.1.0'加入到頂級build.gradle
  2. apply plugin: 'com.google.gms.google-services'添加到應用級build.gradle

運行./gradlew app:dependencies,我可以看到下面的輸出:

com.google.firebase:firebase-core:9.0.0 
    \--- com.google.firebase:firebase-analytics:9.0.0 
      +--- com.google.android.gms:play-services-basement:9.0.0 
      | \--- com.android.support:support-v4:23.0.0 -> 25.3.1 (*) 
      +--- com.google.firebase:firebase-common:9.0.0 
      | +--- com.google.android.gms:play-services-basement:9.0.0 (*) 
      | \--- com.google.android.gms:play-services-tasks:9.0.0 
      |   \--- com.google.android.gms:play-services-basement:9.0.0 (*) 
      \--- com.google.firebase:firebase-analytics-impl:9.0.0 
       +--- com.google.android.gms:play-services-base:9.0.0 
       | +--- com.google.android.gms:play-services-basement:9.0.0 (*) 
       | +--- com.google.firebase:firebase-common:9.0.0 (*) 
       | \--- com.google.android.gms:play-services-tasks:9.0.0 (*) 
       +--- com.google.android.gms:play-services-basement:9.0.0 (*) 
       +--- com.google.firebase:firebase-iid:9.0.0 
       | +--- com.google.android.gms:play-services-basement:9.0.0 (*) 
       | \--- com.google.firebase:firebase-common:9.0.0 (*) 
       \--- com.google.firebase:firebase-common:9.0.0 (*) 

也許是問題的一部分,也許不是,但我覺得很奇怪,插件的最新版本包括火力地堡的較舊版本(9.0.0 )而不是11.0.1

此外,作爲錯誤狀態,該問題是由以下原因造成的:

java.lang.IllegalAccessError: Method 'void android.support.v4.content.ContextCompat.<init>()' 

這似乎表明,V4支持庫可能與問題相關的。

是什麼導致了這些問題,有什麼解決辦法?

+0

您確定您已編譯Firebase 11.0.1嗎? –

+0

@ cricket_007什麼? 'google-services'插件包含庫,如'./gradlew app:dependencies'輸出中所示,它增加了'9.0.0'版本。 – Orbit

+0

該插件將分析添加到您的類路徑中。它不會將Firebase的任何其他部分編譯到您的實際應用程序中 –

回答

1

當我運行的依賴任務,沒有谷歌Play或指定爲應用模塊build.gradle依賴關係火力地堡庫,我看到這個警告信息在輸出端產生的頂部:

google-services plugin could not detect any version for com.google.android.gms or com.google.firebase, default version: 9.0.0 will be used. 
please apply google-services plugin at the bottom of the build file. 

滾動該消息右看:default version: 9.0.0 will be used

究其原因,插件必須後應用依賴於build.gradle塊是它會掃描庫列表來確定使用什麼版本爲它的處理。您的模塊依賴關係必須至少包含一個Firebase或Google Play庫,以便插件可以選擇版本號。

您在對您的帖子發表評論中指出明確取決於核心不是必需的。這是在文檔的某個地方嗎?查看每個Firebase API(Analytics,實時數據庫,存儲,崩潰報告等)的設置指南,其中每個都包括將API庫添加到依賴關係的步驟。

+0

如果您單擊將Android應用程序添加到您的Firebase項目中,它將啓動一個模式來引導您完成這些步驟。最後一步指示開發人員在他們的頂層'build.gradle'中包含'classpath'com.google.gms:google-services:3.1.0'',並在其應用級別'build.gradle'中應用插件。然後它提到默認包含Google Analytics,並且顯示不需要包含任何其他依賴項。 – Orbit

+0

請注意,明確地將'compile'c​​om.google.firebase:firebase-core:11.0.1''添加到我的依賴關係會影響版本,如'./gradlew app:dependencies'的輸出所示。然而,儘管這樣可以緩解原始錯誤,但現在出現了一個奇怪的問題,那就是我的演示者對'getView()'的調用,在這種情況下,它是一個Activity,它返回null。刪除Firebase解決了這個問題,我覺得很奇怪。這個問題不一定與這個問題有關,所以我可能會提交另一個問題。 – Orbit