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

Quiero utilizar la nueva biblioteca de soporte 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 hace que sea fácil de usar multidex.

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

Editar:

Android 5.0 (API de nivel 21) y superior usa ART que admite nativamente multidexing. Por lo tanto, si su minSdkVersion es 21 o superior, no se necesita la biblioteca de soporte multidex.


Modifica 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.3' } 

Si está ejecutando pruebas unitarias, querrá 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 obtener más información, esta es una buena guía.

Los siguientes pasos son necesarios para iniciar multi dexing:

Agregue android-support-multidex.jar a su proyecto. El archivo jar 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 anula attachBaseContext de esta manera:

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

Usé el enfoque de anulación porque eso no molesta con la jerarquía de clases de su clase de aplicación.

Ahora su aplicación está lista para usar multi dex. El siguiente paso es convencer a Gradle para que cree una aplicación de dex a múltiples. El equipo de herramientas de comstackción está trabajando para que esto sea más fácil, pero por el momento debes agregar lo siguiente a la parte de Android de tus aplicaciones build.gradle

  dexOptions { preDexLibraries = false } 

Y lo siguiente a la parte general de tus 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' } } } 

Se puede encontrar más información en el blog Alex Lipovs .

SIMPLEMENTE, para habilitar multidex, necesitas …

 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 la aplicación como este

    ...   

En su build.gradle agregue esta dependencia:

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

nuevamente en su archivo build.gradle agregue esta línea al bloque predeterminadoConfig :

 multiDexEnabled true 

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

 public class AppConfig extends MultiDexApplication { 

ahora estás listo para irte! 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 de 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.

Primero debes probar con Proguard (Esto limpia todo el código sin usar)

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' } } 

}

Si quiere habilitar multi-dex en su proyecto, solo vaya a gradle.builder

y agregue esto en su 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 extiéndala a la aplicación. Si su aplicación utiliza la extensión de la clase de la aplicación, puede anular el método oncrete () y llamar.

  MultiDex.install(this) 

para habilitar multidex.

y finalmente agregue en su manifiesto

     ...   

Agregar 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 aplicación MultiDex

agrega multiDexEnabled = true en tu build.gradle

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

solo agregando esto recortado en 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**** } } 

Multi_Dex.java

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

Agregue esto a su app gradle y no olvide habilitar multidex

 dexOptions { incremental true javaMaxHeapSize "2g" }