No se puede crear apk: El número de referencias de métodos no puede superar los 64K

He estado intentando construir el archivo apk para mi aplicación, sin embargo, estoy recibiendo el error: El número de referencias de método no puede superar los 64K.

Aquí están los errores,

Error: El número de referencias de método en un archivo .dex no puede superar los 64K. Obtenga información sobre cómo resolver este problema en https://developer.android.com/tools/building/multidex.html.

Error: Error de ejecución para la tarea ': 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' C: \ Archivos de programa \ Java \ jdk1.7.0_15 \ bin \ java.exe terminado con valor de salida no nulo 2

Este es mi archivo gradle,

apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "nikhilraghavendra.hopper" minSdkVersion 21 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { shrinkResources true minifyEnabled true useProguard true 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.2.1' compile 'com.android.support:design:23.2.1' compile 'com.google.android.gms:play-services-identity:8.4.0' compile 'com.firebase:firebase-client-android:2.3.1' compile 'com.android.support:cardview-v7:23.2.1' compile 'com.google.android.gms:play-services:8.4.0' } 

Quiero crear el archivo apk y desplegarlo sin ningún problema, ¿cómo lo hago?

Actualizar

También intenté lo siguiente

 apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" dexOptions { maxProcessCount = 4 // this is the default value } dataBinding{ enabled = true } defaultConfig { applicationId "nikhilraghavendra.hopper" minSdkVersion 21 targetSdkVersion 23 resConfigs "en", "fr" versionCode 1 versionName "1.0" } buildTypes { release { shrinkResources true minifyEnabled true useProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { minifyEnabled true useProguard false } } 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.2.1' compile 'com.android.support:design:23.2.1' compile 'com.google.android.gms:play-services-identity:8.4.0' compile 'com.firebase:firebase-client-android:2.3.1' compile 'com.android.support:cardview-v7:23.2.1' compile 'com.google.android.gms:play-services:8.4.0' } 

Esto está produciendo el mensaje:

Error: Error de ejecución para la tarea ': app: transformClassesWithNewClassShrinkerForDebug'.

Las advertencias que se encuentran durante el encogimiento, utilice -dontwarn o -ignorewarnings para suprimirlas.

¿Cómo trato con esto y construyo un apk apropiado? Por favor ayuda.

 android { compileSdkVersion 26 buildToolsVersion "26.0.0" defaultConfig { applicationId "com.try.app" minSdkVersion 21 targetSdkVersion 26 versionCode 1 versionName "1.0" multiDexEnabled true } 

Aquí multiDexEnabled true debería hacer el juego por ti

ACTUALIZACIÓN: para admitir la versión más reciente de Android
1. Si su minSdkVersion está establecida en 21 o superior, todo lo que necesita hacer es establecer multiDexEnabled como true en su archivo build.gradle a nivel de módulo, como se muestra arriba.
2. Sin embargo, si su minSdkVersion está establecida en 20 o inferior, debe utilizar la biblioteca de soporte multidex junto con los cambios anteriores de la siguiente manera:

 dependencies { compile 'com.android.support:multidex:1.0.1' } 

Aparte de la adición anterior de la biblioteca de soporte, debe realizar cambios en su clase de aplicación como se menciona en este vínculo .

MEJORES PRÁCTICAS:
1. Quite cualquier código no utilizado con proguard.
2. Evite agregar dependencias innecesarias en su proyecto.
3. Si se necesita un número limitado de métodos o clases de cualquier biblioteca de código abierto, entonces es aconsejable clonar sólo a aquellos en su proyecto, ya que no sólo le da total control sobre ellos, sino que también le permite a proguard actuar sobre ellos y no tiene Cualquier método no utilizado en su código.

Fuente: Desarrolladores de Android – Configurar aplicaciones con 64 KB

No se puede crear apk: El número de referencias de método no puede exceder de 64K ocurren cuando el archivo .dex de la aplicación tiene más de 65.536 métodos.

Exceed 65K Método que significa que el método cuenta más de 65.536 métodos Hay diferentes maneras de solucionarlo:

1. Reducir las dependencias en su proyecto poner dependencias en gradle que se requieren

La mayoría de los problemas que encontré de otros desarrolladores es utilizar los servicios de Google Play en ellos.

  compile 'com.google.android.gms:play‐services:8.4.0' 

Así que la mejor manera es elegir solo algunas dependencias en Google Play Services que realmente quieras usar.

 compile 'com.google.android.gms:play‐services‐location:8.4.0' compile 'com.google.android.gms:play‐services‐maps:8.4.0' compile 'com.google.android.gms:play‐services‐ads:8.4.0' 

2. Establezca una versión mínima de SDK a 21 o superior

¿Por qué funcionó cuando el cambio SDK mínimo a 21? Eso es debido a Android 5.0 o superior son el uso de ART (Android Runtime) que soporta MultiDex en lugar de Dalvik. Por lo tanto, ART puede soportar más de 65.536 métodos.

3. Utilice Proguard para reducir el método inútil

4. Utilice MultiDex

Pero estos son la limitación de la biblioteca MultiDex

• Puede ocurrir ANR mientras se ejecuta la aplicación si los archivos .dex son demasiado grandes.

• Debe definirse SDK mínimo a la versión 14 o superior.

• MulitDex utiliza más memoria y puede bloquearse mientras la aplicación se ejecuta si la memoria de asignación está por encima del límite.

Toma más tiempo de construcción cuando construyes el proyecto

Ponga esto dentro de su defaultConfig :

 multiDexEnabled true 
  • facebook screenshot-tests-para-android thow NullPointer en hacer captura de pantalla
  • Error de generación en el android studio
  • Utilizar una convención de nomenclatura diferente para los apks firmados generados mediante el asistente en Android Studio
  • Android Studio / gradle: redimensionamiento automático de imágenes para android
  • Fabric / Crashlytics en Android - ¿Cómo tener dos proyectos de crashltics diferentes con el mismo nombre de paquete?
  • Dependencia relativa del proyecto Gradle con HoloEverywhere
  • Los archivos Jar en la carpeta libs no se utilizan en la compilación de Android Gradle
  • Android Studio siempre excluye la carpeta de compilación / fuente
  • Uso de Quasar Fibers en la aplicación para Android
  • New Relic - java.io.IOException: El archivo existe
  • ClassCastException: NoClassDefFoundError no se puede transmitir a RuntimeException
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.