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.
- Android Studio 1.3 error multidex en gradle
- No encontró la clase "android.support.multidex.MultiDexApplication" en la ruta: DexPathList
- Error de ejecución para la tarea ': packageAllDebugClassesForMultiDex'
- Activar la opción `--multi-dex` en hormiga para Android
- Demasiadas referencias de métodos en el proyecto de biblioteca de android - ClassNotFoundException
¿Qué pasos se necesitan para usar esta biblioteca y para construir mi aplicación con soporte multidex?
- Habilitar Soporte MultiDex en Android para lograr métodos de 65K + en Eclipse
- ¿Qué paquete para MultiDexTestRunner? Android.support.multidex o com.android.test.runner
- Actualización de Android Studio a 1.0 corrompe MultiDex
- La prueba de instrumentación falla al azar con multidexado activado
- 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?
- La ejecución falló para la tarea ': app: shrinkReleaseMultiDexComponents'
- Conmutación entre configuraciones de ejecución de dos módulos sin Clean cuando uno de ellos utiliza Multidex
- ¿Hay una manera de limitar el importe del método en el archivo principal dex mientras se utiliza la función MultiDex en Android Studio
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" }
- React Native en Android no encontró Herramientas de compilación
- ¿Cómo agregar Apache HTTP API (legacy) como dependencia de compilación a build.grade para Android M?