support studio not gel failed could android performance android-studio android-gradle android-multidex

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.