Estoy creando una aplicación con la Biblioteca SugarORM, pero cuando intento compilar el proyecto para API 17 (no verifiqué otras) muestra un error de compilación.
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
Pero cuando construyo este proyecto para Android v5.0 o superior, funciona bien. Si elimino la dependencia de SugarORM Gradle, funciona bien para ambos dispositivos v4.2.2 y v5.0.
android
gradle
android-gradle-plugin
android-multidex
sugarorm
Sandeep Singh Rana
fuente
fuente
One or more of the answers is exemplary and worthy of an additional bounty.Just to the point and accurate answer.
, sugiero la respuesta superior (y aceptada).Respuestas:
Tienes demasiados métodos. Solo puede haber 65536 métodos para dex .
Como se sugiere, puede utilizar el soporte multidex .
Simplemente agregue estas líneas en
module/build.gradle
:También en su
Manifest
agregar laMultiDexApplication
clase de la biblioteca de soporte multidex al elemento de aplicaciónSi está utilizando su propia
Application
clase, cambie la clase principal deApplication
aMultiDexApplication
.Si no puede hacerlo, en su clase de Aplicación anule el
attachBaseContext
método con:Otra solución es tratar de eliminar el código no utilizado con ProGuard : configure los ajustes de ProGuard para que su aplicación ejecute ProGuard y asegúrese de tener habilitada la reducción para las versiones de lanzamiento.
fuente
En android / app / build.gradle
Ponga esto dentro de su configuración predeterminada:
fuente
Recibí este mensaje de error porque mientras codificaba la versión de compilación de actualización automática de mi proyecto en mi
build.gradle
archivo:Resuélvelo corrigiendo la versión:
fuente
Esto es lo que funcionó para mí:
Esto sucede porque hay demasiados métodos no utilizados. La mayoría de estos métodos provienen de bibliotecas incluidas en su build.gradle
Use recursos de reducción y reducción para arreglar esto con gradle y limpiar su código al mismo tiempo.
fuente
Cambiar el nivel de aplicación build.gradle:
Funcionó para mí.
fuente
multiDexEnabled
opción, sin dependencias ni cambios en el archivo de manifiestoEste error también puede ocurrir cuando carga todas las API de servicios de Google Play cuando solo usa algunas.
Según lo declarado por google: "En las versiones de los servicios de Google Play anteriores a la 6.5, tenía que compilar todo el paquete de API en su aplicación. En algunos casos, hacerlo dificultaba mantener la cantidad de métodos en su aplicación (incluyendo API de marco, métodos de biblioteca y su propio código) por debajo del límite de 65,536.
A partir de la versión 6.5, puedes compilar selectivamente las API del servicio Google Play en tu aplicación ".
Por ejemplo, cuando su aplicación necesita play-services-maps, play-services-location. Debe agregar solo las dos apis en su archivo build.gradle en el nivel de la aplicación como se muestra a continuación:
En vez de:
Para obtener una documentación completa y una lista de las API de servicios de Google Play, haga clic aquí
fuente
Cuando las referencias de su aplicación superan los 65.536 métodos, encuentra un error de compilación que indica que su aplicación ha alcanzado el límite de la arquitectura de compilación de Android
Soporte Multidex anterior a Android 5.0
Las versiones de la plataforma anteriores a Android 5.0 (API nivel 21) utilizan el tiempo de ejecución Dalvik para ejecutar el código de la aplicación. De forma predeterminada, Dalvik limita las aplicaciones a un único archivo de código de bytes classes.dex por APK. Para evitar esta limitación, puede agregar la biblioteca de soporte multidex a su proyecto:
Soporte Multidex para Android 5.0 y superior
Android 5.0 (API nivel 21) y superior utiliza un tiempo de ejecución llamado ART que admite de forma nativa la carga de múltiples archivos DEX desde archivos APK. Por lo tanto, si su minSdkVersion es 21 o superior, no necesita la biblioteca de soporte multidex .
Evita el límite de 64K
Configurar multidex en la aplicación para
Si su minSdkVersion está configurado en 21 o superior, todo lo que necesita hacer es configurar multiDexEnabled en verdadero en su archivo build.gradle de nivel de módulo
si su minSdkVersion está configurada en 20 o menos, entonces debe usar la biblioteca de soporte multidex
Anule la clase Aplicación, cámbiela para extender MultiDexApplication (si es posible) de la siguiente manera:
agregar al archivo de manifiesto
fuente
He estado enfrentando el mismo problema y para el soporte multidex, debe tener en cuenta la minSdkVersion de su aplicación. Si está utilizando minSdkVersion 21 o superior, simplemente escriba multiDexEnabled true de esta manera
Funciona para mí y si está usando minSdkVersion por debajo de 21 (debajo de lolipop ), entonces tiene que hacer dos cosas más simples
1. Primero agregue esta dependencia
en su build.gradle.
2. Último y segundo, agregue uno en la siguiente línea a su aplicación en manifiesto
Bingo, entonces también funcionará en la versión inferior .. :) Happy coding
fuente
Solo un comentario lateral, antes de agregar soporte para multidex, asegúrese de no agregar dependencias innecesarias.
Por ejemplo, en la guía oficial de análisis de Facebook
Indican claramente que debe agregar la siguiente dependencia:
que en realidad es todo el FacebookSDK, por lo que si necesita, por ejemplo, solo Analytics, debe reemplazarlo por:
Opciones de SDK parcial de Facebook
fuente
facebook-core
yfacebook-login
, y el error se ha ido.Para mí, la actualización de Gradle funciona. Busque actualizaciones en el sitio web de Android y luego agréguelas a su build.gradle (Proyecto) de esta manera
luego sincronice el proyecto con el archivo gradle y, a veces, podría suceder debido a java.exe (en mi caso) simplemente fuerce kill java.exe desde el administrador de tareas en Windows y luego vuelva a ejecutar el programa
fuente
También puedes probar esto:
Espero que ayude a alguien. Gracias
fuente
** **
Para desarrolladores de juegos de Unity
** **
Si alguien viene aquí porque este error apareció en su proyecto de Unity, vaya a Archivo-> Configuración de compilación -> Configuración del reproductor -> Reproductor. vaya a Configuración de publicación y en la pestaña Generar, active "Plantilla de gradle de iniciador personalizado". se mostrará una ruta debajo de ese texto. ve a la ruta y agrega multiDexEnabled true así:
fuente
puedes habilitar "Instant Run" en Android Studio para obtener soporte multidex.
fuente
Haz esto, funciona:
fuente