Je reçois l'exception ci-dessous lors du lancement de l'application.
java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.vfirst.ifbagro-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.vfirst.ifbagro-1, /vendor/lib, /system/lib]]
at android.app.ActivityThread.installProvider(ActivityThread.java:4993)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4596)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4536)
at android.app.ActivityThread.access$1300(ActivityThread.java:149)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5214)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.vfirst.ifbagro-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.vfirst.ifbagro-1, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.app.ActivityThread.installProvider(ActivityThread.java:4978)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4596)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4536)
at android.app.ActivityThread.access$1300(ActivityThread.java:149)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5214)
at java.lang.reflect.Method.invokeNative(Native Method)
Voici le build.gradle au niveau de l'application
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
android {
compileSdkVersion 24
buildToolsVersion "24.0.1"
defaultConfig {
applicationId "com.vfirst.ifbagro"
minSdkVersion 17
targetSdkVersion 24
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:design:24.2.1'
compile 'com.android.support:support-v4:24.2.1'
compile 'com.google.android.gms:play-services-gcm:9.4.0'
compile 'com.google.android.gms:play-services-location:9.4.0'
compile 'com.android.support:multidex:1.0.1'
compile 'com.google.firebase:firebase-messaging:9.4.0'
compile 'com.google.android.gms:play-services:9.4.0'
testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'
Ceci est mon build.gradle au niveau de l'application
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
classpath 'com.google.gms:google-services:3.0.0'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
classpath 'com.google.gms:google-services:3.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Comment résoudre le problème?
android:name="android.support.multidex.MultiDexApplication"
? Si MultiDex est correctement configuré , vous verrez des messages LogCat lors de l' application init de comme celui - ci:I/MultiDex: install done
.Réponses:
J'ai eu la même erreur et je l'ai résolue avec MultiDex, comme décrit sur ce lien: https://developer.android.com/studio/build/multidex.html
Parfois, il ne suffit pas d'activer MultiDex.
FirebaseInitProvider est requis au démarrage.
Vous devez donc spécifier manuellement FirebaseInitProvider comme requis dans le fichier DEX principal.
fichier build.gradle
multidex-config.txt (dans le même répertoire que le fichier build.gradle)
la source
Application
classe s'étend deMultiDexApplication()
. Cela manquait dans mon cas.J'ai aussi rencontré le même problème et je l'ai finalement résolu en désactivant
Instant Run
dans un studio Android.Mettre à jour:
Il n'y a pas d'option Instant Run disponible dans le dernier Android Studio 3.5+. Il ne devrait s'appliquer qu'aux anciennes versions.
la source
Dans le fichier build.gradle (Module: app), insérez le code ci-dessous dans defaultConfig:
et insérer dans les dépendances:
Ensuite, ajoutez du code au manifeste:
la source
J'ai eu le même problème dans mon (projet de lecteur YouTube) ... et ce qui suit a résolu le problème pour moi:
Ajoutez ce code dans votre
build.gradle
(module: app) à l'intérieurdefaultConfing
:Ajoutez ce code dans votre
build.gradle
(module: app) à l'intérieurdependencies
:Ouvert
AndroidManifest.xml
et intérieurapplication
:ou si vous avez votre classe App, étendez-la à partir de MultiDexApplication comme:
Et enfin, je pense que vous devriez avoir téléchargé le référentiel de support Android , dans les extras dans SDK Manager .
la source
Remplacez simplement la méthode suivante dans votre classe d'application.
la source
android:name
Si votre minSdkVersion est définie sur 21 ou plus, tout ce que vous avez à faire est de définir multiDexEnabled sur true dans votre fichier build.gradle au niveau du module, comme indiqué ici:
Sinon , si votre minSdkVersion est définie sur 20 ou moins, vous devez utiliser la bibliothèque de support multidex comme suit:
la source
import android.content.Context;
etimport android.support.multidex.MultiDex;
L'activation
multidex
n'est pas une bonne solution carmultidex
avoir une autre utilisation dans Android voir cette réponse qu'est-ce que le multidexLa solution est de désactiver l'exécution instantanée comme l'a dit @Shylendra Madda
Je pense que la raison de ce problème est que lorsque l'exécution instantanée est activée, Android Studio ne met pas les bibliothèques telles que
firebase
dans l'apk généré pour réduire le temps de construction du projet car lafirebase
bibliothèque et d'autres bibliothèques telles quemaps
et d' autres existent dans les services de lecture et les services de lecture sont installés sur un appareil Android, donc si l'exécution instantanée est activée, vous n'avez pas besoin de les mettre dans l'apk généré pour accélérer le temps de construction.Ainsi, lorsque vous extrayez apk et l'installez sur un autre appareil, vous verrez cette exception
la source
J'ai également rencontré le même problème après avoir essayé toutes les solutions, j'ai trouvé la solution ci-dessous.
Si vous avez appliqué des règles proguard, ajoutez la ligne ci-dessous dans les règles ProGuard
et sa résoudre mon problème.
la source
-keep class com.google.firebase.provider.FirebaseInitProvider
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
Comment activer s'il vous plaît dites-moi monsieur1: Accédez au gradle enable multiDexEnabled et ajoutez la bibliothèque multidex dans les dépendances.
2: Accédez au fichier Manifest et écrivez android: name = ". MyApplication" (le nom de la classe (MyApplication) est facultatif, vous pouvez écrire ce que vous voulez).
3: Comme vous l'avez écrit android: name = ". MyApplication" Inside Application at Manifest file. cela vous donnera une erreur car vous n'avez pas créé la classe MyApplication. Créer une classe MyApplication étendez-la par classe "application" ou cliquez simplement sur MyApplication, un petit ballon rouge apparaît sur le côté gauche d'une syntaxe cliquez dessus, vous verrez (créer classe MyApplication) dans le menu, cliquez dessus et inclure ci-dessous Méthode À l'intérieur de cette classe.
Si vous souhaitez obtenir plus d'informations, cliquez sur ce lien: [ https://developer.android.com/studio/build/multidex.html]
J'espère que cela fonctionne pour vous.
la source
Ajoutez d'abord ce qui suit dans build.gradle (Module: app) ---->
Ensuite, dans le même fichier, ajoutez ce qui suit
Ensuite, dans AndroidManifest.xml, écrivez ce qui suit
C'est tout. Cela fonctionnera certainement
la source
Si vous utilisez MultiDex dans votre application Gradle, le changement étend l'application pour étendre MultiDexApplication dans votre classe d'application. Cela fonctionnera avec défi
la source
J'ai eu le même problème et résolu, ajoutez simplement un morceau de code.Si vous rencontrez ce problème, cela signifie que vous avez déjà terminé toutes les étapes nécessaires pour utiliser Firebase. Il vous suffit de créer une classe qui étend l'application (la classe publique Application_CrashReport étend l'application) et d'ajouter cette classe dans le fichier mainifest et dans cette classe, il suffit de remplacer la méthode ci-dessous
et ajoutez MultiDex.install (this); dans cette méthode signifie
Remarque : - N'oubliez pas de suivre les étapes ci-dessus
la source
Cela est dû à MultiDex.
Les étapes à résoudre:
Dans gradle-> dependencies -> (compile'com.android.support: multidex: 1.0.1 ') Ajoutez ceci dans les dépendances
Dans votre projet, la classe d'application étend MultiDexApplication comme ceci (la classe publique MyApplication étend MultiDexApplication)
Exécuter et vérifier
la source
C'est un peu tard pour ceux qui arrivent, mais vérifiez vos règles proguard! J'ai perdu beaucoup de temps là-dessus. Vos règles proguard peuvent changer les noms des fichiers Firebase importants. Cela ne prouve vraiment qu'un problème en production et en exécution instantanée :)
proguard-rules.pro
la source
Comme mentionné précédemment, il s'agit d'un problème avec
multidex
: vous devez ajouter une implémentation à votrebuild.gradle
etMainApplication.java
. Mais ce que vous ajoutez dépend vraiment du fait que vous preniez en charge AndroidX ou non. Voici ce dont vous avez besoin pour résoudre ce problème:Mettez ces lignes de code dans votre
build.gradle
(android / app / build.gradle):Mettez ces lignes dans votre
MainApplication.java
(android / app / src / main / java /.../ MainApplication.java):Mettez ces lignes de code dans votre
build.gradle
(android / app / build.gradle):Mettez ces lignes dans votre
MainApplication.java
(android / app / src / main / java /.../ MainApplication.java):la source
Vous devez étendre votre classe Application avec
MultiDexApplication
au lieu deApplication
.la source
Ce problème s'est produit lorsque je suis passé à Android Studio 3.4 avec le plugin Android Gradle 3.4.0. qui fonctionne avec le compilateur R8.
Le plugin Android Gradle inclut des fichiers de règles ProGuard prédéfinis supplémentaires, mais il est recommandé d'utiliser proguard-android-Optimize.txt . Plus d'infos ici .
la source
J'étais confronté au même problème et j'ai résolu ce problème en changeant la version de fireabseStorage de la même manière que la version de base de données Firebase
à
la source
Si vous avez> 20 minsdkversion, vous devez utiliser la dernière version de Firebase Auth ie
et pas besoin de configurer multi-dex si vous n'en avez pas réellement besoin.
J'ai rencontré ce problème lorsque j'ai utilisé 16.0.5 à partir de l'assistant Firebase mais que j'ai pu le résoudre lorsque j'ai mis à jour vers 18.1.0.
la source
Si vous utilisez Xamarin.Forms, vous voudrez peut-être consulter la classe Vous n'avez pas trouvé la classe "com.google.firebase.provider.FirebaseInitProvider"? car cela capture le problème avec l'erreur dex avec google firebase au démarrage (non résolu pour le moment).
Je suis revenu à n'utiliser aucun rétrécissement à court terme et je prévois d'utiliser ProGuard jusqu'à ce que R8 soit plus stable.
la source
ajouter le chemin racine du projet google-services.json
la source