Je construis une application avec SugarORM Library, mais lorsque j'essaie de créer le projet pour l'API 17 (je n'ai pas vérifié les autres), une erreur de construction s'affiche.
Information:Gradle tasks [:app:assembleDebug]
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAnimatedVectorDrawable2330Library UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72330Library UP-TO-DATE
:app:prepareComAndroidSupportCardviewV72330Library UP-TO-DATE
:app:prepareComAndroidSupportDesign2330Library UP-TO-DATE
:app:prepareComAndroidSupportMediarouterV72300Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72330Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42330Library UP-TO-DATE
:app:prepareComAndroidSupportSupportVectorDrawable2330Library UP-TO-DATE
:app:prepareComAndroidVolleyVolley100Library UP-TO-DATE
:app:prepareComGithubSatyanSugar14Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServices840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAds840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAnalytics840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAppindexing840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAppinvite840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAppstate840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAuth840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBase840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBasement840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesCast840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesDrive840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesFitness840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesGames840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesGcm840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesIdentity840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesLocation840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesMaps840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesMeasurement840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesNearby840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesPanorama840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesPlus840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesSafetynet840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesVision840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesWallet840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesWearable840Library UP-TO-DATE
:app:prepareMeDrakeetMaterialdialogLibrary131Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:compileDebugJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources
:app:prePackageMarkerForDebug
:app:transformClassesWithDexForDebug
Error:The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
Information:BUILD FAILED
Information:Total time: 21.663 secs
Information:2 errors
Information:0 warnings
Information:See complete output in console
Mais lorsque je construis ce projet pour Android v5.0 ou supérieur, cela fonctionne bien. Si je supprime la dépendance de gradle SugarORM, cela fonctionne bien pour les deux appareils v4.2.2 et v5.0.
android
gradle
android-gradle-plugin
android-multidex
sugarorm
Sandeep Singh Rana
la source
la source
One or more of the answers is exemplary and worthy of an additional bounty.Just to the point and accurate answer.
Je suggère la réponse la plus élevée (et acceptée)!.Réponses:
Vous avez trop de méthodes. Il ne peut y avoir que 65536 méthodes pour dex .
Comme suggéré, vous pouvez utiliser le support multidex .
Ajoutez simplement ces lignes dans le
module/build.gradle
:Également dans votre
Manifest
ajoutez laMultiDexApplication
classe de la bibliothèque de support multidex à l'élément d'applicationSi vous utilisez votre propre
Application
classe, changer la classe parente deApplication
laMultiDexApplication
.Si vous ne pouvez pas le faire, dans votre classe Application, remplacez la
attachBaseContext
méthode par:Une autre solution consiste à essayer de supprimer le code inutilisé avec ProGuard - Configurez les paramètres ProGuard pour que votre application exécute ProGuard et assurez-vous que la réduction est activée pour les versions de version.
la source
Dans android / app / build.gradle
Mettez ceci dans votre defaultConfig:
la source
J'ai reçu ce message d'erreur car lors du codage de la version de compilation de la mise à jour automatique de mon projet dans mon
build.gradle
fichier:Résolvez-le en corrigeant la version:
la source
C'est ce qui a fonctionné pour moi:
Cela se produit parce qu'il y a trop de méthodes inutilisées. La plupart de ces méthodes proviennent des bibliothèques incluses dans votre build.gradle
Utilisez la réduction et la réduction des ressources pour résoudre ce problème avec gradle et nettoyer votre code en même temps.
la source
Modifiez le build.gradle au niveau de l'application:
cela a fonctionné pour moi.
la source
multiDexEnabled
option, sans dépendances ni changements de fichier manifesteCette erreur peut également se produire lorsque vous chargez tous les API des services Google Play lorsque vous n'en utilisez que quelques-uns.
Comme indiqué par google: "Dans les versions des services Google Play antérieures à la version 6.5, vous deviez compiler l'intégralité du package d'API dans votre application. Dans certains cas, cela rendait plus difficile la conservation du nombre de méthodes dans votre application (y compris Framework API, méthodes de bibliothèque et votre propre code) sous la limite de 65 536.
À partir de la version 6.5, vous pouvez à la place compiler de manière sélective les API du service Google Play dans votre application. "
Par exemple, lorsque votre application a besoin de play-services-maps, play-services-location. Vous devez ajouter uniquement les deux API dans votre fichier build.gradle au niveau de l'application, comme indiqué ci-dessous:
Au lieu de:
Pour obtenir la documentation complète et la liste des API des services Google Play, cliquez ici
la source
Lorsque les références de votre application dépassent 65536 méthodes, vous rencontrez une erreur de build qui indique que votre application a atteint la limite de l'architecture de build Android
Prise en charge Multidex avant Android 5.0
Les versions de la plate-forme antérieures à Android 5.0 (niveau d'API 21) utilisent le runtime Dalvik pour exécuter le code d'application. Par défaut, Dalvik limite les applications à un seul fichier de bytecode classes.dex par APK. Afin de contourner cette limitation, vous pouvez ajouter la bibliothèque de support multidex à votre projet:
Prise en charge Multidex pour Android 5.0 et supérieur
Android 5.0 (niveau d'API 21) et supérieur utilise un environnement d'exécution appelé ART qui prend en charge nativement le chargement de plusieurs fichiers DEX à partir de fichiers APK. Par conséquent, si votre minSdkVersion est 21 ou plus, vous n'avez pas besoin du multidex bibliothèque de charge .
Évitez la limite de 64K
Configurer le multidex dans l'application pour
Si votre minSdkVersion est défini 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
si votre minSdkVersion est définie sur 20 ou moins, vous devez utiliser la bibliothèque de support multidex
Remplacez la classe Application, modifiez-la pour étendre MultiDexApplication (si possible) comme suit:
ajouter au fichier manifeste
la source
J'ai été confronté au même problème et pour le support multidex, vous devez garder à l'esprit la minSdkVersion de votre application. Si vous utilisez minSdkVersion 21 ou supérieur, écrivez simplement multiDexEnabled true comme ceci
Cela fonctionne pour moi et si vous utilisez minSdkVersion inférieure à 21 (ci-dessous lolipop ), vous devez faire deux choses très simples
1. Ajoutez d'abord cette dépendance
dans votre build.gradle.
2. Dernière et seconde ajoutez-en une ci-dessous à votre application dans le manifeste
Bingo alors cela fonctionnera aussi dans la version inférieure .. :) Bon codage
la source
Juste un commentaire secondaire, avant d'ajouter la prise en charge du multidex - assurez-vous de ne pas ajouter de dépendances inutiles.
Par exemple dans le guide d'analyse officiel de Facebook
Ils indiquent clairement que vous devez ajouter la dépendance suivante:
qui est en fait l' intégralité de FacebookSDK - donc si vous avez besoin, par exemple, de l'analyse, vous devez le remplacer par:
Options du SDK partiel de Facebook
la source
facebook-core
etfacebook-login
et l'erreur a disparu.Pour moi, la mise à niveau de Gradle fonctionne.Recherchez la mise à jour sur le site Web Android, puis ajoutez-la dans votre build.gradle (projet) comme ceci
puis synchronisez le projet avec le fichier gradle plus cela peut arriver parfois à cause de java.exe (dans mon cas), forcez simplement tuer java.exe à partir du gestionnaire de tâches dans Windows, puis réexécutez le programme
la source
Peut également essayer ceci:
J'espère que ça aide quelqu'un. Merci
la source
**
Pour les développeurs de jeux Unity
**
Si quelqu'un vient ici parce que cette erreur est apparue dans son projet Unity, accédez à Fichier-> Paramètres de construction -> Paramètres du lecteur -> Lecteur. allez dans Paramètres de publication et sous l'onglet Construire, activez "Modèle de Gradle du lanceur personnalisé". un chemin sera affiché sous ce texte. allez sur le chemin et ajoutez multiDexEnabled true comme ceci:
la source
vous pouvez activer "Instant Run" sur Android Studio pour obtenir une prise en charge multidex.
la source
Faites ceci, cela fonctionne:
la source