android - studio - Acelerar la construcción de Gradle en la aplicación multidex
multidex gel (7)
Cambiar MinSdk a 21 hizo que todo volviera a la normalidad para mí. Ahora todo se compila en 6s como
Mi aplicación tiene un montón de bibliotecas que son esenciales, por eso me vi obligado a usar la biblioteca de soporte multidex y funciona bien. Pero donde se muestra el problema es en la velocidad de buid Gradle. Se necesitan 2 minutos en promedio para construir y cuando estoy desarrollando y probando esto es bastante molesto.
¿Hay una manera de acelerar mis versiones de depuración?
Esto ya no es necesario con la última versión de Android Studio 3.0
Multidexing utiliza más memoria. A medida que se acerque más al tamaño máximo de heap en Java, verá que Java pasa más tiempo haciendo GC que en cualquier trabajo real, esto puede ralentizar mucho las cosas.
Recomiendo encarecidamente aumentar el tamaño máximo del montón cuando se utiliza multidex. Agregue lo siguiente al cierre de Android en su archivo build.gradle para que el tamaño máximo de almacenamiento de 4GB (Hazlo más pequeño si lo deseas):
dexOptions {
javaMaxHeapSize "4g"
}
Puede acelerar sus compilaciones de desarrollo especificando la versión mínima de SDK = 21.
La documentación oficial incluye toda una sección al respecto.
Ejemplo (de la documentación):
android {
productFlavors {
// Define separate dev and prod product flavors.
dev {
// dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
// to pre-dex each module and produce an APK that can be tested on
// Android Lollipop without time consuming dex merging processes.
minSdkVersion 21
}
prod {
// The actual minSdkVersion for the application.
minSdkVersion 14
}
}
...
buildTypes {
release {
runProguard true
proguardFiles getDefaultProguardFile(''proguard-android.txt''),
''proguard-rules.pro''
}
}
}
dependencies {
compile ''com.android.support:multidex:1.0.0''
}
Una vez que haya agregado los sabores del producto, puede usar la tarea devDebug
(en lugar de la tarea de debug
predeterminada) para sus compilaciones de desarrollo:
- desde la línea de comandos: ejecute ./gradlew installDevDebug
- Desde Android Studio: abra la ventana Variantes de compilación y seleccione la variante de compilación devDebug
.
Por supuesto, debe trabajar contra un dispositivo cuyo SDK> = 21.
También hay una solución para aquellos que no quieren usar sabores. Como se sugiere en esta esencia , calcule dinámicamente el valor minSdkVersion
:
int minSdk = hasProperty(''devMinSdk'') ? devMinSdk.toInteger() : 14
apply plugin: ''com.android.application''
android {
...
defaultConfig {
minSdkVersion minSdk
...
}
}
En este ejemplo, estamos comprobando si la propiedad devMinSdk
definida, y si es verdadera, la estamos utilizando. De lo contrario, el valor predeterminado es 14.
¿Cómo devMinSdk
valor de devMinSdk
para construir un script? Dos opciones:
Usando la línea de comando:
./gradlew installDebug -PdevMinSdk=21
Usando las preferencias de Android Studio:
Vaya a Preferencias ( Configuración en Windows) -> Compilación, Ejecución, Implementación -> Compilador -> ponga -PdevMinSdk=21
en el cuadro de texto Opciones de la línea de comandos .
Recientemente, el equipo que trabaja en el complemento Gradle de Android introdujo la caché de compilación Puede habilitarlo agregando android.enableBuildCache=true
a gradle.properties
.
Más información aquí http://tools.android.com/tech-docs/build-cache
Para mí, aumentó los tiempos de construcción incrementales en ~ 30 segundos.
No funciona con el legado multidex ( com.android.support:multidex
) introducido como parte de la biblioteca de soporte, por lo que es adecuado solo si su minSDK> = 21. Puede configurarlo solo para sus compilaciones de desarrollo y realizar compilaciones con minSDK <21.
También funciona sin multidexing habilitado.
Vaya a la configuración, busque el compilador, escriba "--offline" en las opciones de la línea de comandos y luego compile.
Android Studio 1.3 (actualmente en Vista previa 3 ) está usando un nuevo sistema de compilación que mejoró el tiempo de compilación de Gradle (en realidad, como 10-30 veces más rápido).
Más información en Live Session en Google I / O 2015