NoClassDefFoundError ci-dessous SDK 21
J'ai vécu une drôle de bug dans mon Application.
Sur mon Nexus 5/7, fonctionnant sous android 5.0.1/5.0.2, tout fonctionne bien.
Cependant si j'ai essayer de l'exécuter exactement le même code sur un appareil avec une version antérieure (testé 4.4.4 et 4.3), je reçois le message d'erreur suivant:
03-13 13:49:41.140 21714-21714/? E/dalvikvm﹕ Could not find class 'com.default.package.application.model.Appcomponent', referenced from method com.default.package.application.controller.DatabaseHandler.getScreenComponents
03-13 13:49:41.140 21714-21714/? E/dalvikvm﹕ Could not find class 'android.support.v7.app.ActionBarActivityDelegate$1', referenced from method android.support.v7.app.ActionBarActivityDelegate.<init>
03-13 13:49:41.140 21714-21714/? E/dalvikvm﹕ Could not find class 'android.support.v7.app.ActionBarActivityDelegateHC', referenced from method android.support.v7.app.ActionBarActivityDelegate.createDelegate
03-13 13:49:41.140 21714-21714/? E/dalvikvm﹕ Could not find class 'android.support.v7.app.ActionBarActivityDelegateBase', referenced from method android.support.v7.app.ActionBarActivityDelegate.createDelegate
03-13 13:49:41.150 21714-21714/? E/dalvikvm﹕ Could not find class 'android.support.v7.app.ActionBarActivityDelegate$ActionBarDrawableToggleImpl', referenced from method android.support.v7.app.ActionBarActivityDelegate.getDrawerToggleDelegate
03-13 13:49:41.150 21714-21714/? E/dalvikvm﹕ Could not find class 'android.support.v7.internal.view.SupportMenuInflater', referenced from method android.support.v7.app.ActionBarActivityDelegate.getMenuInflater
03-13 13:49:41.150 21714-21714/? E/dalvikvm﹕ Could not find class 'android.support.v7.app.ActionBarActivityDelegate$ActionBarDrawableToggleImpl', referenced from method android.support.v7.app.ActionBarActivityDelegate.getV7DrawerToggleDelegate
03-13 13:49:41.150 21714-21714/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.default.package, PID: 21714
java.lang.NoClassDefFoundError: android.support.v7.app.ActionBarActivityDelegateHC
J'ai déjà essayé d'ajouter le support.v7 bibliothèque comme un pot, mais ne fait aucune différence.
Mais depuis, il travaille sur Lollipop appareils cela n'aurait pas de sens de toute façon.
Pourrait-il être qu'il y a un problème concernant le Dalvik/changement d'Art?
Ou peut-être le fait que j'ai dû utiliser com.android.support:multidex:1.0.0 puisque c'est un grand app.
Mise à jour: j'ai essayé de l'enlever certaines dépendances à recevoir au titre de la 65k méthode limite. Après que l'application a couru sur 4.4.4 et 4.3 appareils.
Tout ce que je fait pour l'activation de multidex de soutien a été mise en
multiDexEnabled true
dans le defaultconfig.ini.php section et en ajoutant
compile 'com.android.support:multidex:1.0.0'
ci-dessous dans la section des dépendances de mon build.gradle.
Aucune idée pourquoi ce sont les causes de ces problèmes sur les anciennes versions d'android?
- créer de nouveaux sucette projet dans eclipse et ajouter ses appcompat à ce projet
- Où est-ce que
com.default.package.application.model.appcomponent
viennent ? - J'ai essayé de créer un nouveau projet dans Android Studio et l'ajout de toutes les sources existantes, mais j'ai toujours le même problème. com.par défaut.paquetage est un espace réservé pour mon vrai nom du package ici.
Vous devez vous connecter pour publier un commentaire.
J'ai résolu le problème en ajoutant à ma Classe d'Application.
Semble être nécessaire pour les versions d'android antérieures 5.
Il y a trois façons c'est d'aller travailler.
Et en fait avec l'android de qualité plugin version 0.14.0 et de construire les outils de la version 21.1.0 lorsque vous spécifiez le multiDexEnabled vrai dans le defaultconfig.ini.php, ProductFlavor, ou BuildTypethen il inclut automatiquement la dépendance à la com.android.support:multidex:1.0.0.
Vous pouvez le vérifier avec la androidDependencie tâche ou vous exécutez ./gradlew -q android:dépendances de commande (android: mon android module).
Donc, il n'est pas nécessaire d'ajouter explicitement le
Si vous avez étendu la classe d'Application dans votre application:
ou comme @user2700475 posté
Avec l'aide des réponses aux questions précédentes que j'ai réussi à trouver la solution à ce problème. Je veux juste mettre tout cela ensemble.
Si vous n'avez pas/une utilisation en classe, vous pouvez mettre ceci:
Dans votre balise sur AndroidManifest.xml
Si vous avez déjà mis en place une Application de classe, @user2700475 + @sirvon réponses sont votre meilleur choix.
Aussi évidemment, vous devez ajouter le Gradle dépendance:
Plus d'infos sur 65k méthodes de problème:
https://developer.android.com/tools/building/multidex.html