2016-05-28 8 views
0

Я работал над своим Android-приложением для отправки push-уведомлений с использованием облачных сообщений Firebase. Я настраивал свой сервер, ссылаясь на руководство https://firebase.google.com/docs/server/setup#prerequisites.Ошибка времени компиляции для setServiceAccount() с FirebaseOptions.Builder()

Мой уровень проекта build.gradle, как:

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

App уровень 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 Firebase, чем то, что у вас есть для других Firebase функций:

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

Если вы измените его на:

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

Она будет работать лучше ,

Для получения дополнительной информации см. Firebase documentation for Android developers, откуда я скопировал строку выше.

+0

Спасибо, Фрэнк за ответ. Но я все еще получаю неразрешенную ошибку символа. Я нахожу эту строку кода в своем MainActivity. – ruchita

+0

И если я удалю 'compile ' 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

Это правильное поведение. Вам нужно будет использовать API для версии 9.x Firebase Android SDK. Но смешение версий не сработает. Вы также должны удалить 'compile 'com.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 сервера в то время как другие являются Client SDK, и они будут конфликтовать, если вы пытаетесь используйте их вместе.

+0

Но мне нужно использовать сервисы Google для компиляции com.google.android.gms: play-services: 9.0.0'' и ' compile 'com.google.firebase: firebase-messaging: 9.0.0'' по крайней мере для сервисов Google Play и облачных сообщений firebase. Также в соответствии с моим комментарием выше, если я удалю 'compile 'com.firebase: firebase-client-android: 2.5.2'' и используйте' com.google.firebase: firebase-database: 9.0.0' Получаю ошибку java.lang.NoSuchMethodError. – ruchita

+0

Вы должны сделать два разных проекта: один для сервера и один для клиента. В проекте сервера вы не должны использовать клиентские библиотеки. –

+0

Теперь я получил @Diego, это было бы то, что я буду делать неправильно. Я действительно смешиваю две вещи здесь и, следовательно, эту проблему. Спасибо, что указали это. – ruchita

Смежные вопросы