J'ai mis à jour mon application sur la nouvelle base de feu en utilisant le this et maintenant, lorsque je compile mon projet, j'obtiens l'exception suivante.
Voici mon logcat:
11:57:54.533 27844-27844/com.example.dayshift_2.traveyy E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.dayshift_2.traveyy, PID: 27844
Java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions
at com.google.firebase.FirebaseApp.zzbu(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
at Android.content.ContentProvider.attachInfo(ContentProvider.Java:1591)
at Android.content.ContentProvider.attachInfo(ContentProvider.Java:1562)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at Android.app.ActivityThread.installProvider(ActivityThread.Java:4871)
at Android.app.ActivityThread.installContentProviders(ActivityThread.Java:4466)
at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4406)
at Android.app.ActivityThread.access$1500(ActivityThread.Java:139)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1270)
at Android.os.Handler.dispatchMessage(Handler.Java:102)
at Android.os.Looper.loop(Looper.Java:136)
at Android.app.ActivityThread.main(ActivityThread.Java:5102)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:515)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:785)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:601)
at dalvik.system.NativeStart.main(Native Method)
Mon Build.gradle:
apply plugin: 'com.Android.application'
Android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.example.dayshift_2.traveyy"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE-FIREBASE.txt'
exclude 'META-INF/NOTICE'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.Android.support:appcompat-v7:23.3.0'
compile 'com.Android.support:design:23.3.0'
compile 'com.facebook.Android:facebook-Android-sdk:4.+'
compile 'com.google.Android.gms:play-services:9.0.0'
compile 'com.google.firebase:firebase-database:9.0.0'
compile 'com.google.firebase:firebase-auth:9.0.0'
compile 'com.Android.support:support-v13:23.3.0'
compile 'com.roughike:bottom-bar:1.2.1'
}
apply plugin: 'com.google.gms.google-services'
Je ne sais pas d'où je tire cette exception. Toute aide sera grandement appréciée. Je vous remercie
Cela a fonctionné pour moi:
Et ajoutez ensuite la ligne compile 'com.Android.support:multidex:1.0.1'
à vos dépendances (ou supprimez simplement multiDexEnabled true
si non requis)
Ajoutez cet attribut à la balise d'application dans le manifeste: Android:name="Android.support.multidex.MultiDexApplication"
Si vous avez déjà une classe d'application personnalisée définie dans Android Manifest, étendez-la à partir de MultiDexApplication
au lieu de Application
.
J'espère que ça a aidé!
Utilisation des derniers services Google Play, mais ne fonctionnait pas. Pour moi cette procédure fonctionne:
Mis à jour ma classe d'application:
public class App extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Fichier build.gradle
mis à jour:
defaultConfig {
...
multiDexEnabled true
}
Dépendances incluses:
dependencies {
compile 'com.Android.support:multidex:1.0.0'
}
C'est si simple de réparer les gars. Si vous utilisez les services de lecteur et Firebase dans votre projet, assurez-vous de ne pas importer tous les services disponibles dans google. Il vous suffit d'importer les API dont vous avez réellement besoin. Par exemple:
compile 'com.google.firebase:firebase-messaging:9.2.0'
compile 'com.google.Android.gms:play-services:9.2.0'
En procédant de cette façon, cela peut vous donner noclassdeffounderror .Pour résoudre ce problème
supprimez play-services et synchronisez votre projet. Si vous avez des dépendances, telles que l'utilisation d'annonces ou de cartes dans votre application, définissez l'API spécifique. comme:
compile 'com.google.Android.gms:play-services-maps:9.2.0'
Remarque: Maximum, n'essayez pas d'utiliser multiDexEnabled true. Cela devrait être votre dernière étape pour réparer quelque chose.
J'espère que c'est utile.
J'ai rétrogradé ma dépendance de Google Play-Service à partir de
compile 'com.google.Android.gms:play-services:9.2.0'
à
compile 'com.google.Android.gms:play-services:8.4.0'
qui a résolu ce problème pour moi.
Veuillez vous référer à le lien de débordement de pile suivant pour une description plus détaillée .
Remarque: lors de la mise à niveau vers le dernier service Google Playcompile 'com.google.Android.gms:play-services:9.4.0'
il a également résolu ce problème.
Ou vous pouvez importer de manière sélective certains services dont vous avez besoin, au lieu d'importer tous les services Google Play.
Étape 1: correction de multidex
Classe d'application:
public class StudyNApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
MultiDex.install(this);
}
}
Fiche de classement
defaultConfig {
...
multiDexEnabled true
}
dependencies {
compile 'com.Android.support:multidex:1.0.0'
}
Étape 2: Correction de Java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions
Retirer
compile 'com.google.Android.gms:play-services:9.4.0'
Ajouter deux lib:
compile 'com.google.Android.gms:play-services-maps:9.4.0'
compile 'com.google.Android.gms:play-services-location:9.4.0'
Cela a bien fonctionné.
Ne l'oublie pas.
Android:name="Android.support.multidex.MultiDexApplication"
J'ai résolu ce problème en ajoutant ceci et en abaissant la dépendance de play-service à la compilation 8.4.0 'com.google.Android.gms: play-services: 8.4.0'
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
MultiDex.install(this);
}
et ajoutez ce qui suit au manifeste
Android:name="Android.support.multidex.MultiDexApplication"
Je faisais face à la même erreur lorsque j'ai incrémenté le targetSDKVersion de 22 à 23 ans, j'ai passé au moins une journée entière à résoudre le problème. Maintenant, finalement, je trouve le résultat qui utilise différentes API de service de jeu dans votre fichier build.gradle. Source: https://developers.google.com/Android/guides/setup#add_google_play_services_to_votre_projet
J'ai ajouté seulement les Api pertinentes et mon application fonctionne bien.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(**R.string.default_web_client_id**))
.requestEmail()
.build();
Dans mon même cas, j'ai changé requestIdToken et cela a fonctionné.
Je pense avoir trouvé une solution à ce problème à ce sujet réponse , donnez-lui un coup d'oeil et remerciez-le @ Gabriele Mariotti , il a écrit:
Dans votre build.gradle de niveau supérieur, vous devez ajouter:
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.0.0'
}
}
Puis dans votre module build.gradle:
apply plugin: 'com.Android.application'
Android {
// ...
}
dependencies {
// ...
}
// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
dependencies {
compile 'com.Android.support:support-v4:25.0.1'
compile 'com.google.firebase:firebase-ads:9.0.2'
compile files('libs/StartAppInApp-3.5.0.jar')
compile 'com.Android.support:multidex:1.0.1'
}
appliquer le plugin: 'com.google.gms.google-services'
.
Configurez votre application pour multidex pour résoudre ce problème.
Pour
minSdkVersion
21 ou plus , définissezmultiDexEnabled
sur true dans votre fichier build.gradle au niveau du module, comme indiqué ci-dessous:
Android {
defaultConfig {
//...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
//...
}
Pour
minSdkVersion
API 20 ou inférieure
Modifiez le module-level build.gradle
et ajoutez la bibliothèque multidex en tant que dépendance, comme indiqué ci-dessous:
Android { defaultConfig { ... minSdkVersion 15 targetSdkVersion 26 multiDexEnabled true } //... } dependencies { compile 'com.Android.support:multidex:1.0.1' }
Si vous ne remplacez pas la classe Application
, modifiez votre fichier manifest
pour définir Android:name
dans la balise de l'application comme suit
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:Android="http://schemas.Android.com/apk/res/Android" package="com.example.myapp"> <application Android:name="Android.support.multidex.MultiDexApplication"> //... </application> </manifest>
2.1.1. Si vous remplacez la classe Application
Extend MultiDexApplication
public class MyApplication extends MultiDexApplication { //... }
2.1.2. Ou, si vous remplacez la classe Application
, mais qu'il n'est pas possible de changer la classe de base, vous pouvez remplacer la classe attachBaseContext()
Méthode et appelez MultiDex.install (this) pour activer multidex:
public class MyApplication extends SomeOtherApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
pour plus mdex-gradle
J'espère que cela aidera d'autres personnes confrontées au même problème.
essayez de résoudre ...
dans le fichier Gradle
multiDexEnabled true
compiler 'com.Android.support:multidex:1.0.1'
Fichier manifeste
balise d'application ajouter cette ligne
Android: name = "Android.support.multidex.MultiDexApplication"
Avant de faire toutes ces solutions mouvementées, essayez de Nettoyer le projet ou Reconstruire le projet à partir de Android Studio.
Java.lang. NoClassDefFoundError
Des exceptions sont levées lorsque vous modifiez n'importe quel nom Classe dans votre projet, mais il ne peut pas obtenir les modifications que vous avez apportées à Exécution.