Cómo habilitar multidexing con la nueva biblioteca de soporte de Android Multidex

Quiero utilizar la nueva biblioteca de soporte de Multidex para romper el límite de método para una de mis aplicaciones.

Con Android Lollipop Google presentó una biblioteca de soporte multidex que facilita el multidex.

¿Qué pasos se necesitan para usar esta biblioteca y para construir mi aplicación con soporte multidex?

Desde el 3 de diciembre de 2014, se lanzaron las herramientas de construcción 1.0.0-rc1 . Ahora, todo lo que necesitas hacer es modificar tu build.gradle :

 android { compileSdkVersion 22 buildToolsVersion "23.0.0" defaultConfig { minSdkVersion 14 //lower than 14 doesn't support multidex targetSdkVersion 22 // Enabling multidex support. multiDexEnabled true } } dependencies { compile 'com.android.support:multidex:1.0.1' } 

Si está ejecutando pruebas de unidad, deberá incluir esto en su clase de Application :

 public class YouApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } } 

Para más información, esta es una buena guía.

Los siguientes pasos son necesarios para iniciar la multidistribución:

Agrega android-support-multidex.jar a tu proyecto. El frasco se puede encontrar en su carpeta SDK de Android / sdk / extras / android / support / multidex / library / libs

Ahora puede permitir que su clase de aplicación de aplicaciones extienda MultiDexApplication

 public class MyApplication extends MultiDexApplication 

O sobrescribir attachBaseContext como este:

 protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } 

Utilicé el método de sobrescritura porque no se mete con la jerarquía de clases de su clase de aplicación.

Ahora tu aplicación está lista para usar multidex. El siguiente paso es convencer gradle para construir un apk multi dexed. El equipo de herramientas de construcción está trabajando en hacer esto más fácil, pero por el momento necesita agregar lo siguiente a la parte de Android de sus aplicaciones build.gradle

  dexOptions { preDexLibraries = false } 

Y lo siguiente a la parte general de sus aplicaciones build.gradle

 afterEvaluate { tasks.matching { it.name.startsWith('dex') }.each { dx -> if (dx.additionalParameters == null) { dx.additionalParameters = ['--multi-dex'] } else { dx.additionalParameters += '--multi-dex' } } } 

Más información se puede encontrar en Alex Lipovs blog .

SIMPLEMENTE, para permitir multidex, usted necesita …

 android { compileSdkVersion 21 buildToolsVersion "21.1.0" defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Enabling multidex support. multiDexEnabled true } ... } dependencies { compile 'com.android.support:multidex:1.0.0' } 

También debe cambiar su archivo de manifiesto. En su manifiesto agregue la clase MultiDexApplication de la biblioteca de soporte multidex al elemento de aplicación como este

 <?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> 

En su build.gradle agregue esta dependencia:

 compile 'com.android.support:multidex:1.0.1' 

De nuevo en su archivo build.gradle agregue esta línea al bloque defaultConfig :

 multiDexEnabled true 

En lugar de extender su clase de aplicación desde Application , extiéndala de MultiDexApplication ; me gusta :

 public class AppConfig extends MultiDexApplication { 

Ahora eres bueno para ir! Y en caso de que lo necesite, todo MultiDexApplication hace MultiDexApplication es

 public class MultiDexApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } } 

Paso 1: Cambiar build.grade

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

Paso 2: Configuración en la clase Aplicación

 public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); MultiDex.install(this); } } 

Paso 3: Cambiar grade.properties

 org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 

¡Funcionará!. Gracias.

Si desea habilitar multi-dex en su proyecto, simplemente vaya a gradle.builder

Y agrega esto en tu dependencia

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

Entonces tienes que agregar

  defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Enabling multidex support. multiDexEnabled true} 

A continuación, abra una clase y extand a Aplicación Si su aplicación utiliza se extiende la clase de aplicación, puede sobrescribir el método oncrete () y llamar

  MultiDex.install(this) 

Para habilitar multidex.

Y finalmente agregue en su manifiesto

  <?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> 

Añadir a AndroidManifest.xml:

 android:name="android.support.multidex.MultiDexApplication" 

O

 MultiDex.install(this); 

En el método attachBaseContext de su aplicación personalizada

O su aplicación personalizada extender MultiDexApplication

Agregue multiDexEnabled = true en su build.gradle

 defaultConfig { multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.0' } } 

Sólo añadiendo este snipped en el build.gradle también funciona bien

 android { compileSdkVersion 22 buildToolsVersion "23.0.0" defaultConfig { minSdkVersion 14 //lower than 14 doesn't support multidex targetSdkVersion 22 **// Enabling multidex support. **multiDexEnabled true**** } } 

Primero debe probar con Proguard (Esto limpia todo el código no utilizado)

Android {compileSdkVersion 25 buildToolsVersion "25.0.2"

 defaultConfig { minSdkVersion 16 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } 

}

Añada esto a su aplicación gradle y no olvide activar multidex

 dexOptions { incremental true javaMaxHeapSize "2g" } 
  • Utilizar multiDexEnabled sin Gradle pero proceso de generación de Eclipse en su lugar
  • Ejecución de un Espresso Multidexed .APK
  • INSTALL_FAILED_DEXOPT Error en Android 5.0 en modo de liberación
  • Error al compilar biblioteca multidex después de actualizar SDK
  • Android ProGuard + MultiDex causa ClassNotFoundException
  • Android Studio Lint - establece el nivel de API para la pelusa
  • RoboGuice 3.0 NoClassDefFoundError: roboguice.inject.ContextScopedRoboInjector
  • Impacto de usar Multidex en el rendimiento de la aplicación, estabilidad, compatibilidad ...?
  • Error: Se encontró un problema con la configuración de task collectDebugMultiDexComponents
  • ¿Puedo activar multidex en la compilación de depuración de Android solamente?
  • Android Multidex y bibliotecas de soporte
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.