Android Studio Gradle toma demasiado tiempo para construir

225

Mi proyecto de Android Studio solía construir más rápido, pero ahora lleva mucho tiempo construirlo. ¿Alguna idea de lo que podría estar causando los retrasos? He intentado https://stackoverflow.com/a/27171878/391401 pero no ha tenido efecto. No tengo ningún antivirus en ejecución que pueda interrumpir las compilaciones. Mi aplicación tampoco es tan grande (alrededor de 5 MB ) y solía compilarse en pocos segundos, pero no estoy seguro de qué ha cambiado.

10:03:51 Gradle build finished in 4 min 0 sec  
10:04:03 Session 'app': running  
10:10:11 Gradle build finished in 3 min 29 sec  
10:10:12 Session 'app': running  
10:20:24 Gradle build finished in 3 min 42 sec  
10:28:18 Gradle build finished in 3 min 40 sec  
10:28:19 Session 'app': running  
10:31:14 Gradle build finished in 2 min 56 sec   
10:31:14 Session 'app': running  
10:38:37 Gradle build finished in 3 min 30 sec  
10:42:17 Gradle build finished in 3 min 40 sec  
10:45:18 Gradle build finished in 3 min 1 sec  
10:48:49 Gradle build finished in 3 min 30 sec  
10:53:05 Gradle build finished in 3 min 22 sec  
10:57:10 Gradle build finished in 3 min 19 sec  
10:57:11 Session 'app': running  
Harish
fuente
1
¿Qué utiliza, su teléfono Android o cualquier emulador para ejecutar su aplicación?
Ram Mansawala 01 de
Ejecutando en el dispositivo
Harish
3
no sé por qué google cambió de eclipse a android studio ... Android studio apesta
kapil
38
Cuando el estudio de Android era nuevo, muchos en StackOverflow rechazaron las quejas sobre esto porque era 'solo una versión beta'. Sin embargo, han pasado algunos años desde que era 'solo una versión beta' y todavía es lenta y tiene 8 núcleos, 16 gb de ram y un disco SSD. El viejo Eclipse configurado en esta máquina es tan rápido como un parpadeo.
Andrew S

Respuestas:

453

En Android Studio, vaya a Archivo -> Configuración -> Compilación, Ejecución, Implementación -> Herramientas de compilación -> Gradle

(si está en Mac) Android Studio -> preferencias ... -> Build, Execution, Deployment -> Build Tools -> Gradle

Marque 'Trabajo sin conexión' en 'Configuración global de Gradle'

Reducirá el 90% del tiempo de construcción de gradle.

marque esto para reducir el tiempo de construcción

si acaba de agregar una nueva dependencia en su gradle, tendrá que desmarcar el trabajo fuera de línea o gradle no podrá resolver las dependencias. Después de la resolución completa, puede verificar el trabajo fuera de línea para una compilación más rápida

Biswajit Karmakar
fuente
11
Funcionó muy bien. De 12 minutos a 5 segundos
Ramesh
18
¿no dejará esta configuración de buscar nuevas bibliotecas cuando las agreguemos a build.gradle?
Dany Y
48
cuando agrega una nueva biblioteca, debe ponerla en línea solo por una vez, lo cual será notificado por Gradle Build para que el proyecto sea ejecutable @DanyY
Biswajit Karmakar
15
¿Significa que todo el tiempo el problema era la velocidad de Internet en lugar de la velocidad del procesador?
1
Woah! Pasó de más de 15 minutos a 1 minuto: O
Cardenal - Reincorporar a Monica el
150

Si está utilizando los servicios de Google Play, asegúrese de no utilizarlo en su secuencia de comandos de compilación de Gradle:

compile 'com.google.android.gms:play-services:8.3.0'

Solo use las API de Google que su aplicación realmente está usando. Si todo lo que está usando es Google Maps, usaría esto:

com.google.android.gms:play-services-maps:8.3.0

Cuando hice esto, mi tiempo de compilación pasó de más de 2 minutos a alrededor de 25 segundos. Para obtener una lista de las API de Google con las que puede compilar selectivamente, consulte:

https://developers.google.com/android/guides/setup

AndroidDev
fuente
12
Te mereces más de 100 votos a favor. Cualquier otra fuente sugiere agregar org.gradle.parallel=truey líneas de comando relacionadas ... pero ninguna proporciona una comprensión simple y directa de lo que realmente está sucediendo. Usando su consejo, mi tiempo de construcción pasó de 1 min 5 segundos a 3.427 segundos. ¡¡Increíble!!
Sauron
Muchas gracias, este fue mi principal problema también. Ahora todo funciona muy bien.
alnaji
1
Funciona genial. Use este enlace para encontrar el nombre de su biblioteca de servicios de juego: developers.google.com/android/guides/…
PC.
Te merecías un tic ... Has resuelto mi problema. El problema está en los servicios de Google Play ... Gracias :)
Karue Benson Karue
Esto no solo ayudó con los largos problemas de compilación, sino que ahora también puedo implementarlo directamente en el dispositivo Android sin usar Proguard al depurar (anteriormente recibía un error sobre el límite del método de 65K). ¡Gracias!
magritte
52

Encontré una manera fácil y mejor de construir gradle

vaya a su aplicación >> abra su gradle.properties y cambie algunas líneas de ella [eliminar # ]

de lo contrario, puede copiar pegar mi fragmento de abajo también

    # Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx2048m -XX:MaxPermSize=512m
 org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 org.gradle.parallel=true

funcionó para mí antes, tardó casi 2-3 minutos, ahora solo lleva 5-6 segundos

en el escenario anterior, mi máquina Mac tiene 8 GB de RAM, así que asigné 4 GB para Gradle

Android lo es todo para mí
fuente
Esto redujo mi tiempo de construcción de más de 30 minutos a 24 minutos ... ¿Hay alguna forma de reducir aún más ...?
Programación pirata
34

Encontrado el motivo !! Si Android Studio tiene una configuración de servidor proxy y no puede llegar al servidor, la construcción demora mucho tiempo, probablemente esté tratando de llegar al servidor proxy y esperando un tiempo de espera. Cuando eliminé la configuración del servidor proxy, funciona bien.

Eliminando proxy: File > Settings > Appearance & Behavior > System settings > HTTP Proxy

Harish
fuente
3
¿Cómo eliminar el servidor proxy?
Joolah
2
En Archivo de Windows> Configuración> Aspecto y comportamiento> Configuración del sistema> Proxy HTTP
Harish
2
Mi problema también estaba en el proxy, pero en eso tenía que agregar también el proxy HTTPS en las propiedades de gradle. El proxy HTTP no fue suficiente: systemProp.http.proxyHost = xxx.xxx.xxx.xxx systemProp.http.proxyPort = 8080 systemProp.https.proxyHost = xxx.xxx.xxx.xxx systemProp.https.proxyPort = 8080
user3098756
26
AS es broma completa y bs. Estoy cansado de estas tonterías.
The_Martian
99
¡¡¡Estoy de acuerdo!!! ¡Estoy sufriendo cantidades profundas de dolor al migrar un gran proyecto de Eclipse, y ahora que los errores se borran, la construcción con AS nunca termina! Odio AS @The_Martian
Josh
20

Seguir los pasos lo hará 10 veces más rápido y reducirá el tiempo de construcción en un 90%

Primero cree un archivo llamado gradle.properties en el siguiente directorio:

/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)

Agregue esta línea al archivo:

org.gradle.daemon=true

org.gradle.parallel=true
usuario779370
fuente
44
Puede configurarlo directamente desde gradle.properties ubicado bajo proyecto de estudio.
Biswajit Karmakar
3
Sí, también habilite esta opción org.gradle.jvmargs = -Xmx2048m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8
user779370
2
Establecer MaxPermSize = 1024m
Biswajit Karmakar
¿Por qué esas propiedades no están predefinidas? ¿Hay alguna desventaja?
oli
Esta opción solo debe usarse con proyectos desacoplados. Más detalles, visite gradle.org/docs/current/userguide/…
javad
17

La habilitación de las características de Java 8 causó una compilación lenta

gradle

 jackOptions {
        enabled true
  }

  compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

Después de eliminar las líneas anteriores, se acumula en segundos.

Hay un problema Compilar con Jack lleva mucho tiempo

Respuesta del gerente de proyecto

Somos conscientes de que los tiempos de compilación son un problema con Jack en este momento. Tenemos mejoras en el complemento 2.4 Gradle que debería ser una mejora significativa para las compilaciones incrementales.

A partir de ahora, la última versión de Gradle que puedo encontrar es 2.3.0-beta4

tchelidze
fuente
44
Sí estoy de acuerdo. Para habilitar java 8 en el estudio de Android, debe usar Jack y, al hacerlo, mis tiempos de compilación vuelan a la luna desde compilaciones de 1-2 minutos a 16 minutos ... qué ... Es inutilizable en este momento. Como siempre buen trabajo Google
Karol Żygłowicz
7

La solución @AndroidDev funcionó para mí. Había incluido toda la biblioteca en gradle.

compile 'com.google.android.gms:play-services:8.4.0'

Cambiando a resuelto el problema. De 4 min a 1 min.

compile 'com.google.android.gms:play-services-ads:8.4.0'
compile 'com.google.android.gms:play-services-analytics:8.4.0'

Thnx

KlevisGjN
fuente
4

Verifica tu conexión a Internet . Si la velocidad de Internet es muy lenta, la construcción de Gradle también llevará mucho tiempo. Compruebo cambiando mi conexión a internet wifi con otra conexión de buena velocidad. Ahora el tiempo de construcción es normal. Por favor, intente esto antes de ir a otras soluciones. alguien tomará una decisión equivocada para reinstalar o cambiar la configuración. Espero que sea de ayuda. Gracias y saludos.

Karthikeyan Dheshnamoorthy
fuente
Asegúrese de permitir Android Studio en Firewall. Estaba esperando casi 15 minutos para el gradle en una nueva instalación cuando de repente la ventana emergente de Firewall me pidió que lo permitiera. Aunque podría haber sido antes
Mohd.Zafranudin
2

1) Mi tiempo de compilación aumentó considerablemente después de agregar algunas nuevas dependencias de la biblioteca a mi archivo gradle, lo que resultó que necesito usar multidex después de eso. Y cuando configuré multidex correctamente, mis tiempos de compilación subieron a 2-3 minutos. Entonces, si desea tiempos de compilación más rápidos, evite usar multidex y, en la medida de lo posible, reduzca el número de dependencias de la biblioteca.

2) También puede intentar habilitar el "trabajo sin conexión" en el estudio de Android, como se sugiere aquí, eso tiene sentido. Esto no volverá a buscar bibliotecas cada vez que realice una compilación. Quizás la conexión lenta o el uso de proxy / vpn con el "trabajo fuera de línea" deshabilitado puede conducir a tiempos de compilación lentos.

3) servicios de google: como se menciona aquí, no use el paquete completo, use solo las partes necesarias.

lxknvlk
fuente
1

En la versión beta de Android Studio 2.0, han lanzado una función llamada Instant Run . Reduce el tiempo de construcción en un factor importante. El concepto central es que Android Studio solo empuja los pequeños cambios realizados en una aplicación que ya se está ejecutando.

Clasifica los cambios que hacemos en nuestro código en tres partes: intercambio en caliente, intercambio en caliente e intercambio en frío, en función de la cantidad de carga que el cambio pondría en la compilación. Después de eso, simplemente intercambia el código en la aplicación que ya se está ejecutando y podemos ver los cambios ejecutándose unos segundos. Vea su documento para más información.

Aquí puede descargar la vista previa de Android Studio 2.0.

PD: Hay algunos problemas con esta función. Lo han enumerado en los documentos. Compruébelo antes de la instalación.

Akeshwar Jha
fuente
1
  1. Vaya a Archivo-> Configuración -> Gradle -> Configúrelo en modo fuera de línea y verifique
vikas khot
fuente
1

Me enfrenté al mismo problema durante mucho tiempo, pero lo resolví ajustando la configuración en gradle.

Paso 1: en la aplicación Módulo agregue dependencia en BuildScript

buildscript {
 dependencies {
         classpath 'com.android.tools.build:gradle:2.0.0-alpha9'
}
}

Paso 2: agregue dexOption y proporcione el siguiente heapSize

  dexOptions {
    incremental = true;
    preDexLibraries = false
    javaMaxHeapSize "4g"
}

Paso 3: Agregue sabores de producto

    productFlavors {
    dev {
        minSdkVersion 23
        applicationId = "com.Reading.home"
    }
    prod {
        minSdkVersion 15
        applicationId = "com.Reading.home" // you don't need it, but can be useful

    }
}

Esto debería reducir su tiempo de construcción.

Binesh Kumar
fuente
0

Si está utilizando Windows 8 ...

Las soluciones DroidArc y AndroidDev fueron útiles, pero no suficientes. Mi problema estaba relacionado con mi sistema operativo Windows 8 y su uso de disco al 100%.

Especialmente el servicio de búsqueda de Windows, fue el más consumidor. Deshabilítelo con: cmd (Admin)> net.exe stop "Windows search"

Seguí las instrucciones en este enlace y resolvió el problema con 4 consejos reales para arreglar el uso del disco al 100% y mejorar el rendimiento de Windows

Espero que esto ayude.

dianakarenms
fuente
0

Tuve el mismo problema en Kotlin. La actualización del obsoleto tiempo de ejecución de Kotlin lo resolvió para mí

Rami Amro Ahmed
fuente
0

Tuve problemas como este, especialmente al depurar activamente a través de mi teléfono; a veces tomó 27 minutos. Hice lo siguiente y tomé nota de la explicación debajo de cada uno: uno puede funcionar para usted:

  1. Cambié mi archivo gradle.properties (en Gradle scripts si tiene la vista del archivo del proyecto en la opción de Android O dentro de su carpeta de proyecto). Agregué esto porque mi computadora tiene algo de memoria de sobra: puede asignar diferentes valores al final dependiendo de las especificaciones de su computadora y los requisitos mínimos de Android Studio (Xmx8000m -XX: MaxPermSize = 5000m):

org.gradle.daemon = true

org.gradle.configureondemand = true

org.gradle.parallel = true

android.enableBuildCache = true

org.gradle.caching = true

org.gradle.jvmargs = -Xmx8000m -XX: MaxPermSize = 5000m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8

  1. Esto no resolvió completamente mi problema en mi caso. Por lo tanto, también hice lo que otros habían sugerido antes: hacer que mi proceso de compilación fuera de línea:

Archivo -> Configuración / Preferencias -> Compilación, Ejecución, Implementación -> Gradle

Configuración global de Gradle (en la parte inferior)

Marque la casilla de verificación llamada: Trabajo sin conexión.

  1. Esto redujo el tiempo sustancialmente pero fue errático; a veces tomó más tiempo. Por lo tanto, hice algunos cambios en Instant Run:

Archivo -> Configuración / Preferencias -> Compilación, ejecución, implementación -> Ejecución instantánea

Marcado: Habilite la ejecución instantánea para el código de intercambio en caliente ...

Marcado: reiniciar la actividad en los cambios de código ...

  1. El movimiento anterior también fue errático y, por lo tanto, traté de averiguar si el problema puede ser los procesos / memoria que se ejecutan directamente en mi teléfono y computadora. Aquí liberé un poco de memoria en mi teléfono y el almacenamiento (que estaba al 98% utilizado, hasta el 70%) y también en el administrador de tareas (Windows), aumentó la prioridad de Android Studio y Java.exe a High. Dé este paso con cautela; depende de la memoria de tu computadora.

  2. Después de todo esto, mi tiempo de compilación mientras depuraba activamente en mi teléfono a veces se redujo a 1 ~ 2 minutos, pero a veces se disparó. ¡Decidí hacer un truco que me sorprendió al reducirlo a segundos en el mismo proyecto que me dio 22 - 27 minutos fueron 12 segundos !:

Conecte el teléfono para la depuración y luego haga clic en EJECUTAR

Después de que comience, desconecte el teléfono: la compilación debería continuar más rápido y generar un error al final que indica esto: Sesión 'aplicación': Error al instalar APK

Vuelva a conectar el teléfono y haga clic en EJECUTAR nuevamente ...

ALTERNATIVAMENTE

Si el script / función / método que estoy depurando es puramente JAVA, no JAVA-android, por ejemplo, probando una API con JSONArrays / JSONObjects, pruebo mis funciones / métodos java en Netbeans que pueden compilar un solo archivo y mostrar la salida más rápido y luego hacer cambios necesarios en mis archivos de Android Studio. Esto también me ahorra mucho tiempo.

EDITAR

Intenté crear un nuevo proyecto de Android en el almacenamiento local y copié todos mis archivos del proyecto anterior en el nuevo: java, res, manifest, gradle app y gradle project (con la última dependencia de gradle classpath). Y ahora puedo construir en mi teléfono en menos de 15 segundos.

Firsake
fuente
0

En su build.gradle, si tiene minifyEnabled para depuración, elimínelo. Lo tenía en mi proyecto y me llevó ~ 2-3 minutos construirlo. Después de mirar el progreso de la compilación, encontré esto como culpable, por lo que al eliminar la línea comentada a continuación, mi problema se solucionó.

buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }//debug{
         //   minifyEnabled true
         //   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}
Mukesh
fuente
0

Tuve el mismo problema, incluso la construcción de gradle funcionó durante 8 horas y estaba preocupado. Pero más tarde cambié la versión de compilación de SDK y la versión mínima de SDK en el archivo build.gradle como este.

Mayor:

android {
compileSdkVersion 25
buildToolsVersion "29.0.2"

defaultConfig {
    applicationId "com.uwebtechnology.salahadmin"
    minSdkVersion 9
    targetSdkVersion 25
}

Nuevo (actualizado):

android 
{
  compileSdkVersion 28
   buildToolsVersion "25.0.2"

 defaultConfig {
    applicationId "com.uwebtechnology.salahadmin"
    minSdkVersion 15
    targetSdkVersion 28
 }
Pir Fahim Shah
fuente
-2

Tuve un problema similar en mi computadora. Windows Defender estaba bloqueando alguna parte de Gradle Building. Lo he desactivado, funcionó bien después de eso.

rickdroio
fuente
-43

Intente reiniciar su computadora y ejecutar Android Studio nuevamente. A mí me funcionó al intentar construir un proyecto Cordova / Phonegap con una base de código de destino de Android.

racl101
fuente