que proyecto estructura ejemplo compile android build gradle android-gradle dex

android - proyecto - gradle project



Gradle construye muy lento con una estructura multiproyecto (3)

Al hacer una clean se eliminan las bibliotecas ya prefijadas.
Tal como se sugiere en este hilo , puede ahorrar algo de tiempo en clean compilaciones clean deshabilitando la expresión previa (porque en la siguiente compilación se eliminarán):

android { dexOptions { preDexLibraries = false } }

Cuando se construye con gradle en una configuración de proyectos múltiples que contiene aproximadamente 140 proyectos / bibliotecas, el tiempo de construcción tomó 1 hora y 22 minutos. Y --parallel usando --parallel . Y nuestra construcción ANT lleva menos de 20 minutos sin construcción paralela.

Aquí es exactamente lo que hice.

./gradlew clean ./gradlew build --parallel

Hice una pequeña prueba, parece que la demora está tomando la mayor cantidad de tiempo. ¿Hay alguna manera de hacer que el proceso de gradle reutilice lo que ya ha sido analizado? Si las bibliotecas ya han sido compiladas, debe reutilizar las bibliotecas ya dexeadas.

Vi la opción --no-rebuild , pero cuando ejecuto con esa opción dice lo siguiente

File ''/path/to/project/build/libs/project.aar'' specified for property ''bundle'' does not exist.

Reemplacé la ruta del archivo y el nombre del proyecto con cosas genéricas.

Utilizando Gradle 1.9-rc-3

Información adicional (15 de enero de 2014):

preDexDebug y preDexRelease tomaron mucho tiempo en cada proyecto. Mucho más largo que cualquier otra tarea.

Progreso (15 de enero de 2014):

Ok, por ahora, puse preDexLibraries = false en todos los archivos build.gradle . Sin embargo, todavía me gustaría saber un lugar centralizado en el que pueda colocar esa entrada y que afecte a todos los demás archivos de build.gradle .

Sin embargo, ahora dexRelease y dexDebug llevan mucho tiempo. ¿Hay alguna forma en que pueda decirle a la compilación que solo haga dexDebug o dexRelease y omita el otro?

Progreso (15 de enero de 2014):

Usando assembleDebug funcionó. Sin embargo, todavía parece que no está reutilizando las bibliotecas ya dexed. Porque dexing sigue tardando una eternidad. Se tarda aproximadamente un minuto para cada proyecto. ¿Hay una manera de hacer que Gradle reutilice las bibliotecas ya dexed? ¿O hay una razón diferente por la que la construcción todavía toma aproximadamente una hora? Nuestro proceso ANT tarda menos de 15 minutos.


Según este post .

En este momento, cada proyecto pre-dex sus dependencias por sí mismo. Esto significa que 2 componentes, dependiendo de la misma biblioteca, ejecutarán pre-dex en el archivo classes.jar de esa biblioteca, lo cual es una tontería. Estamos mirando a arreglar esto.


¿Intentaste configurar los parámetros del compilador de Gradles?

Si tiene dependencias remotas, cada vez que ejecute el proyecto, se operará con recursos remotos utilizando la red. Debe definir las instrucciones para el compilador de Gradles para que trabaje sin conexión usando:

--offline

Aquí te dejo una captura de pantalla de la configuración del compilador para un mejor rendimiento:

O lo que es lo mismo ...

Fuente: http://gradle.org/docs/current/userguide/gradle_command_line.html