Android Studio: ¿Por qué estoy recibiendo un error multi dex en el nuevo proyecto API de Google Maps?

Soy relativamente nuevo en la programación de Android y estoy intentando crear un proyecto de Google Maps. He utilizado la opción de plantilla en Android Studio, y he añadido la clave para la API.

No he añadido nada de mi propio código y dejó el código de la plantilla como es porque sólo quería ejecutar el código y ver lo que parece, sin embargo, sigo recibiendo un error multi dex cuando intento ejecutar esto en el emulador Provocando la falla de la compilación. Es extraño para mí que estoy recibiendo este error porque no he añadido ningún código en absoluto y estoy usando lo que la plantilla de Google Maps tiene de Android Studio.

Alguien sabe por qué este error aparece en un nuevo proyecto? El error que veo se pega a continuación.

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.8.0_91 \ bin \ java.exe terminado con valor de salida distinto de cero 2

Como se cita a continuación:

Probablemente compile toda la API de Play Services usando la compilación 'com.google.android.gms: play-services: 9.2.0' … Ahora podemos compilar selectivamente la API para evitar el límite dex de 64K. Para Google Maps use com.google.android.gms: play-services-maps: 9.2.0 … – Loki Jul 1 at 19:01

Respuesta de Loki trabajado y era muy simple de hacer.

Configuración de servicios de Google Play

Ir a través de este enlace sólo tiene que añadir las dependencias que desea en su aplicación. Esto evitará que el error de 64k exceda.

Codificación feliz.

El problema es que actualmente tiene un gran número de métodos. Sólo puede haber 65536 métodos para dex. Puede intentar habilitar multiDex editando su archivo build.gradle.

android { //stuff defaultConfig { ... // Enable multiDex support. multiDexEnabled true } } dependencies { compile 'com.android.support:multidex:1.0.0' } 

También, oops como el cartel mencionado anteriormente en su manifiesto también necesita agregar que está utilizando la clase multidex de la biblioteca de soporte multidex.

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.dexapp"> <application ... android:name="android.support.multidex.MultiDexApplication"> ... </application> 

Cambie su configuración de generación de Gradle para habilitar multidex

 android { compileSdkVersion 23 buildToolsVersion "24.0.0 rc2" defaultConfig { applicationId "com.try.app" minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName "1.0" multiDexEnabled true } 

En su manifiesto agregue la clase MultiDexApplication desde la biblioteca de soporte multidex al elemento de la aplicación.

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application ... android:name="android.support.multidex.MultiDexApplication"> ... </application> </manifest> 

Nota: Visite https://developer.android.com/studio/build/multidex.html para obtener más información.

Establezca la propiedad multiDexEnabled en true en defaultConfig. Este error se produce cuando las referencias de método aumentan el límite de 65k. Compruebe las API del servicio de Google Play.

  android{ ... defaultConfig { ... multiDexEnabled true } ... } 

Esta es una buena fuente para empezar a utilizar la API de Google Maps para Android

He eliminado las dependencias como sugiere Loki y funciona.

 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:24.1.1' compile 'com.google.android.gms:play-services-maps:9.4.0' } 
  • Activar la opción `--multi-dex` en hormiga para Android
  • Tratando de probar un módulo de Android en la aplicación MultiDex, com.android.test.runner.MultiDexTestRunner no se reconoce
  • Android Multidex y bibliotecas de soporte
  • Estudio de Android java.lang.NoClassDefFoundError: android.support.v4.app.NavUtilsJB
  • DexIndexOverflowException: No se puede combinar el nuevo índice 65772 en una instrucción no jumbo !: Jumbo Mode? Y / o Multi-Dex? ¿Qué hay detrás de la escena?
  • RoboGuice 3.0 NoClassDefFoundError: roboguice.inject.ContextScopedRoboInjector
  • Android Studio Lint - establece el nivel de API para la pelusa
  • ¿Qué es android multidex?
  • NoClassDefFoundError debajo de SDK 21
  • Error al compilar biblioteca multidex después de actualizar SDK
  • Error en la instalación de Multidex
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.