android - gel - multidex 1.0 3
Cómo habilitar multidexing con la nueva biblioteca de soporte de Android Multidex (11)
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''
}
}
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?
Agregue esto a su app gradle y no olvide habilitar multidex
dexOptions {
incremental true
javaMaxHeapSize "2g"
}
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);
}
}
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 compilació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 .
Multi_Dex.java
public class Multi_Dex extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
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''
}
}
}
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
<?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>
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
<?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>
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****
}
}
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.
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.