Как решить проблему с инициализацией API Firebase (Android + Firebase)
Недавно мне понадобилось использовать Google GCM в моем проекте. На веб-сайте говорится:
Firebase Cloud Messaging (FCM) - это новая версия GCM. Он наследует надежная и масштабируемая инфраструктура GCM, а также новые возможности! Видеть FAQ, чтобы узнать больше. Если вы интегрируете обмен сообщениями в новое приложение, начните с FCM. Пользователям GCM настоятельно рекомендуется перейти на FCM, с тем чтобы воспользоваться новыми возможностями FCM сегодня и в будущем.
Чтобы настроить новое приложение Firebase, я выполнил инструкции, представленные на официальном веб-сайте и сделал следующее:
- Создал новое приложение Firebase в веб-консоли и получил от меня мой json - после предоставления правильного пакета моего приложения;
- В файле gradle верхнего уровня проекта я добавил
classpath 'com.google.gms:google-services:3.0.0'
в разделе зависимости;
- В моем модуле gradle я добавил:
compile 'com.google.firebase:firebase-core:9.0.0'
compile 'com.google.firebase:firebase-messaging:9.0.0'
и в последней строке я добавил: apply plugin: 'com.google.gms.google-services'
;
Полные gradle файлы приведены ниже:
Файл верхнего уровня gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7'
classpath 'com.google.gms:google-services:3.0.0'
}
}
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Модуль gradle файл:
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
dexOptions {
javaMaxHeapSize "4g"
}
defaultConfig {
applicationId "br.com.gogame"
minSdkVersion 21
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
useLibrary 'org.apache.http.legacy'
}
dependencies {
...
compile 'com.google.firebase:firebase-core:9.0.0'
compile 'com.google.firebase:firebase-messaging:9.0.0'
...
}
apply plugin: 'com.google.gms.google-services'
Когда я запускаю свое приложение, я получаю эту стек:
05-23 14:04:55.109 13368-13368/br.com.gogame I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.internal.zzqq$zzd>
05-23 14:04:55.109 13368-13368/br.com.gogame I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.internal.zzqq$zzd>
05-23 14:04:55.110 13368-13368/br.com.gogame I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.internal.zzqq$zzc>
05-23 14:04:55.110 13368-13368/br.com.gogame I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.internal.zzqq$zzc>
05-23 14:04:55.126 13368-13368/br.com.gogame E/FirebaseApp: 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)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.FirebaseApp.zzbu(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1748)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1723)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:5174)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4769)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4709)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1415)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.NoSuchMethodError: No static method zzy(Ljava/lang/Object;)Ljava/lang/Object; in class Lcom/google/android/gms/common/internal/zzx; or its super classes (declaration of 'com.google.android.gms.common.internal.zzx' appears in /data/app/br.com.gogame-2/base.apk:classes26.dex)
at com.google.android.gms.measurement.internal.zzt.zzaU(Unknown Source)
at com.google.android.gms.measurement.AppMeasurement.getInstance(Unknown Source)
at java.lang.reflect.Method.invoke(Native Method)
at com.google.firebase.FirebaseApp.zza(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.FirebaseApp.zzbu(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1748)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1723)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:5174)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4769)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4709)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1415)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-23 14:04:55.131 13368-13368/br.com.gogame I/FirebaseInitProvider: FirebaseApp initialization successful
05-23 14:04:55.133 13368-13368/br.com.gogame E/AndroidRuntime: FATAL EXCEPTION: main
Process: br.com.gogame, PID: 13368
java.lang.NoSuchMethodError: No static method zzy(Ljava/lang/Object;)Ljava/lang/Object; in class Lcom/google/android/gms/common/internal/zzx; or its super classes (declaration of 'com.google.android.gms.common.internal.zzx' appears in /data/app/br.com.gogame-2/base.apk:classes26.dex)
at com.google.android.gms.measurement.internal.zzt.zzaU(Unknown Source)
at com.google.android.gms.measurement.AppMeasurementContentProvider.onCreate(Unknown Source)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1748)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1723)
at android.app.ActivityThread.installProvider(ActivityThread.java:5174)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4769)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4709)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1415)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Любая помощь в решении этой проблемы будет очень оценена!
Отношения
Ответы
Ответ 1
Хорошо, после битвы много я нашел то, что вызывало мою проблему. В основном у меня были два модуля библиотек - это оказалось моим собственным - каждый из них импортировал разные версии com.android.support:appcompat-v7.*
и google play services. Все они импортировали одну и ту же версию, и проблема исчезла.
Ответ 2
Я встретил ту же ошибку, которая была решена при обновлении firebase-core:
dependencies {
compile 'com.google.firebase:firebase-core:9.0.2'
}
Ответ 3
Убедитесь, что все зависимости должны иметь одинаковую версию
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',
{
exclude group: 'com.android.support', module: 'support-annotations'
})
implementation 'com.android.support:appcompat-v7:25.2.0'
implementation 'com.android.support:design:25.2.0'
implementation 'com.android.support:support-v4:25.2.0'
implementation 'com.google.firebase:firebase-auth:10.0.1'
implementation 'com.android.support:cardview-v7:25.2.0'
implementation 'com.google.firebase:firebase-database:10.0.1'
testCompile 'junit:junit:4.12'
}
Ответ 4
Я столкнулся с той же проблемой, но через некоторое время Я понял, что проблема в Gradle, т.е.
compile "com.android.support:support-v4:+"
затем я просто удалил + и заменил реальную версию, т.е.
compile "com.android.support:support-v4:23.1.0"
тогда это начало работать
Ответ 5
Для меня совершенно несвязанный импорт вызвал эту ошибку compile 'com.aurelhubert: ahbottomnavigation: 1.3.3'
Когда я удалил его, все было в порядке
Ответ 6
В моем случае проблема возникает из-за того, что я применил плагин "com.google.gms.google-services" внутри зависимостей модулей build.grandle insteand, чтобы поместить его в конец файла.
Ответ 7
У меня была та же проблема, исправленная обновлением до play-services-auth: 10.0.1:
dependencies {
......
//implementation 'com.google.android.gms:play-services-auth:9.0.0'
implementation 'com.google.android.gms:play-services-auth:10.0.1'
....
}
Ответ 8
Вы можете проверить зависимости с помощью команды gradle
./gradlew app:dependencies
Как сказал Эдгар, убедитесь, что все библиотеки зависимостей имеют одну и ту же версию.
Если нет, вы можете исключить эту зависимость, используя
compile('your dependency') {
exclude group: 'lib to be removed'
}
И добавьте эту зависимость самостоятельно.
Ответ 9
В моем случае я забыл добавить это с помощью сборки уровня приложения
implementation 'com.google.firebase:firebase-messaging:9.6.0'
Итак, я получил FireBase fi rebase-api-initialization-fail
Ответ 10
добавьте compile 'com.google.android.gms:play-services:9.0.0'
в свой файл build.gradle на уровне приложения
Ответ 11
Я, после борьбы всю ночь, потому что версия моих зависимостей одинакова. После добавления Firebase Analytics, когда я отредактировал код и запустил его на свое устройство, мое приложение разбилось на Отклонение повторной инициализации в ранее не пройденном классе com.google.android.gms... Мне нужно очистить проект и снова запустите, тогда он работал нормально, но снова будет разбит, если я отредактирую код.
Моя проблема вызвана "useProguard false" из следующего руководства https://developer.android.com/studio/build/shrink-code.html
debug {
minifyEnabled true
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
но я отключил Instant Run, поэтому удалить "useProguard false" исправил мою проблему.
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
Ответ 12
Более полный ответ для новичков. @Эдгар прав, спасибо!
Ошибка: "Ошибка инициализации Firebase API" может быть найдена в logcat Android Monitor из-за несовместимой версии библиотеки. Это могут быть любые библиотеки, с помощью которых вы компилируете свое приложение в перспективе Project: перейдите по адресу: Your-app-directory/app/build.gradle
В моем случае я должен соответствовать этой версии 2 модуля, и это решило это сообщение об ошибке:
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-appindexing:16.0.1'
Я прикрепил здесь снимок экрана, чтобы вы могли видеть все это.
![enter image description here]()