2016-05-28 71 views
0

我正在使用我的Android應用程序使用Firebase雲消息發送推送通知。我參考指南https://firebase.google.com/docs/server/setup#prerequisites設置我的服務器。使用FirebaseOptions.Builder()編譯時間錯誤setServiceAccount()

我的項目級的build.gradle是這樣的:

dependencies { 
classpath 'com.android.tools.build:gradle:2.1.0' 
classpath 'com.google.gms:google-services:3.0.0' 
} 

應用水平build.grade:

dependencies { 
compile 'com.firebase:firebase-client-android:2.5.2' 
compile 'com.firebase:geofire:1.1.0' 
compile 'com.google.android.gms:play-services-gcm:9.0.0' 
compile 'com.google.android.gms:play-services:9.0.0' 
compile 'com.google.firebase:firebase-messaging:9.0.0' 
compile 'com.google.firebase:firebase-server-sdk:[3.0.0,)' 
compile 'com.google.firebase:firebase-core:9.0.0' 

}

我已經創建控制檯上的服務帳戶的憑據,以及但是我在初始化SDK時參考了https://firebase.google.com/docs/server/setup#add_the_sdk

FirebaseOptions options = new FirebaseOptions.Builder() 
.setServiceAccount 
(new FileInputStream("path/to/serviceAccountCredentials.json")) 
.setDatabaseUrl("https://databaseName.firebaseio.com/") 
.build(); 

我得到的編譯錯誤:(116,21)錯誤:無法找到符號方法setServiceAccount(的FileInputStream)

我已經檢查過很多地方,但我無法找到我在做什麼錯。任何幫助將不勝感激。

回答

1

你,包括不同版本的火力地堡數據庫SDK的比你有什麼其他的火力地堡特點:

compile 'com.firebase:firebase-client-android:2.5.2' 

如果將其更改爲:

compile 'com.google.firebase:firebase-database:9.0.0' 

這將更好地工作。

欲瞭解更多信息,請參閱,從我複製上面的行。

+0

感謝弗蘭克的回覆。但我仍然得到未解決的符號錯誤。我在我的MainActivity中調用這一行代碼。 – ruchita

+0

如果我刪除'編譯 'com.firebase:firebase-client-android:2.5.2'並使用'com.google.firebase:firebase-database:9.0.0' 我得到錯誤java.lang。 NoSuchMethodError:無靜態方法zzbu(Landroid/content/Context;)Lcom/google/firebase/FirebaseApp;在類Lcom/google/firebase/FirebaseApp中;或者com.google.firebase.provider.FirebaseInitProvider.onCreate的超級類 – ruchita

+0

這是正確的行爲。您需要爲9.x版本的Firebase Android SDK使用API​​。但混合版本不起作用。您還應該刪除'compile'c​​om.google.firebase:firebase-server-sdk:[3.0.0,)'' –

2

在你的服務器項目,你只需要使用的依賴:
com.google.firebase:firebase-server-sdk:[3.0.0,)和刪除:

compile 'com.firebase:firebase-client-android:2.5.2' 
compile 'com.google.android.gms:play-services-gcm:9.0.0' 
compile 'com.google.android.gms:play-services:9.0.0' 
compile 'com.google.firebase:firebase-messaging:9.0.0' 
compile 'com.google.firebase:firebase-core:9.0.0' 

第一個是服務器的SDK,而另一些客戶端SDK和他們有矛盾,如果你嘗試一起使用它們。

+0

但我需要使用谷歌播放服務'編譯'com.google.android.gms:播放服務:9.0.0''和'編譯'com.google.firebase:firebase-messaging:9.0.0''至少適用於谷歌播放服務和Firebase雲消息。 也根據我上面的評論,如果我刪除'編譯'com.firebase:firebase-client-android:2.5.2''並使用'com.google.firebase:firebase-database:9.0.0'我得到錯誤java.lang.NoSuchMethodError。 – ruchita

+0

您應該執行兩個不同的項目,一個用於服務器,一個用於客戶端。在服務器項目中,您不應使用客戶端庫。 –

+0

現在我明白了@Diego,這將是我會做錯的事情。我真的把這兩件事情混在一起,因此也是這個問題。感謝您指出。 – ruchita