Android Studio, ¿cómo ejecutar Gradle Sync manualmente?

135

Estoy depurando problemas de Gradle en Android Studio y veo referencias a "Ejecutar sincronización de Gradle", pero no estoy seguro de cómo ejecutar este comando.

¿Cómo ejecuto "Gradle sync" desde Android Studio o Mac terminal?

Alex Stone
fuente

Respuestas:

212

Android Studio debería tener este botón en la barra de herramientas marcada "Sincronizar proyecto con archivos Gradle"

EDITAR: No sé cuándo se cambió, pero ahora se ve así:

ingrese la descripción de la imagen aquí

EDITAR: así es como se ve en 3.3.1 O yendo a Archivo -> Sincronizar proyecto con archivos Gradle desde la barra de menú.ingrese la descripción de la imagen aquí

Cai
fuente
2
falta en Adnroid Studio 3.0.1
Roman M
10
@RomanM No falta ... Se movió a "Archivo" ... Por lo tanto, está al lado del icono para guardar
W0rmH0le
49

ADVERTENCIA : el --recompile-scriptscomando ha quedado en desuso desde gradlela versión 5.0. Para verificar su gradleversión, ejecute gradle -v.

./gradlew --recompile-scripts

hará una sincronización sin construir nada.


Alternativamente, con línea de comando en su proyecto raíz

./gradlew build

Se sincronizará y creará su aplicación, y tomará más tiempo que solo una sincronización Gradle

Para ver todas las tareas de gradle disponibles, use ./gradlew tasks

Hugo Gresse
fuente
2
Sí, pero construir hace más, ¿verdad? ¿Cuál es la diferencia entre sync y build?
JohnyTex
construir es una tarea muy genérica. Es como usar un mazo para romper una nuez. En proyectos de Android, ejecutar la tarea "compilar" podría llevar una eternidad.
cesards
10
Uso com.android.tools.build:gradle:3.5.1, y no tiene opción --recompile-scripts
geosmart
desde gradle 5.0, --recompile-scripts se ha convertido en una opción de línea de comandos desconocida,
Francis Bacon
28

En Android Studio 3.3 está aquí:

ingrese la descripción de la imagen aquí

De acuerdo con la respuesta https://stackoverflow.com/a/49576954/2914140 en Android Studio 3.1 , está aquí:

ingrese la descripción de la imagen aquí

Este comando se mueve a File > Sync Project with Gradle Files.

ingrese la descripción de la imagen aquí

CoolMind
fuente
55
ROFL! ¡He estado buscando 2 días para este botón! ¡Gracias!
swooby
1
@swooby, de nada. También lo estuve encontrando durante algún tiempo, incluso hice una pregunta y me ayudaron.
CoolMind
¿Parece que esta opción ya no existe? i.imgur.com/cNFUoxB.png (captura de pantalla recién tomada, en Android Studio 3.5.3)
Venryx
@Venryx, es extraño. Tengo 3.6.3 y este menú todavía existe ( imgur.com/a/F8FCpvk ). De todos modos, es mejor usar un botón en la barra de herramientas.
CoolMind
Aparentemente fue un problema con algunos archivos de AndroidStudio / Gradle desactualizados. Después de eliminarlos y volver a importar el proyecto, la opción apareció nuevamente.
Venryx
23

Los amantes del atajo de teclado pueden agregar un atajo para ejecutar manualmente la sincronización de Gradle yendo a Archivo -> Configuración -> Mapa de teclas -> Complementos -> Soporte de Android -> Sincronizar proyecto con archivos de Gradle (haga clic derecho sobre él para agregar un atajo de teclado) -> Aplicar - > OK y ya está. Método abreviado de teclado Gradle SyncElija cualquier tecla conveniente como acceso directo de sincronización de Gradle que no entre en conflicto con ninguna otra tecla de acceso directo (he elegido Shift + 5 como mi tecla de sincronización de Gradle), así que cuando quiera ejecutar la sincronización de Gradle manualmente, simplemente presione esta tecla de acceso directo del teclado.

Amrit Pal Singh
fuente
2
es 'Android Studio-> Preferencias' para los primeros dos pasos en Mac OS X
CCJ
1
+1 la mejor respuesta a la pregunta
nAkhmedov
La mejor respuesta, no es necesario encontrar el ícono de Sync Project de íconos similares de Android Studio. Solo presiona Shift + 5 y listo.
Er. Kaushik Kajavadara
13

Supongo que se refiere a Herramientas> Android> "Sincronizar proyecto con archivos Gradle" desde el menú principal de Android Studio.

CommonsWare
fuente
2

Atajo (Ubuntu, Windows):

Ctrl + F5

Sincronizará el proyecto con los archivos de Gradle.

Andrey
fuente
1
en MacOS el acceso directo no está definido, uno debe asignarlo. Descrito a continuación stackoverflow.com/a/29642935/1839096
Silwester
1

Creo que ./gradlew taskses lo mismo con Android studio sync. ¿Por qué? Te lo explicaré.

Me encuentro con un problema cuando pruebo el informe de cobertura de jacoco. Cuando ejecuto ./gradlew clean :Test:testDebugUnitTestdirectamente en la línea de comando, aparece el error.

Error opening zip file or JAR manifest missing : build/tmp/expandedArchives/org.jacoco.agent-0.8.2.jar_5bdiis3s7lm1rcnv0gawjjfxc/jacocoagent.jar

Sin embargo, si hago clic en la sincronización de Android Studio en primer lugar, funciona bien. Porque build/../jacocoagent.jaraparecen de forma natural. No sé por qué, tal vez hay un error en el complemento de jacoco. La unidad que encuentro funcionando también .gradlew taskshace que el frasco aparezca. Entonces puedo obtener el mismo resultado en el script gralde.

Además, gradle --recompile-scriptsno funciona para el problema.

Victor Choy
fuente
Hola Victor, tengo un problema que puede probar que estás equivocado. Esto es lo que obtuve, configuré un configProductID = 11111 desde mi gradle.properties, desde mi build.gradle, agregué la cadena "resValue". Si hago una compilación limpia de ADT, se puede generar el recurso R.string.ProductID. Luego puedo hacer gradlew assembleDebug para compilar. Luego cambio mi nombre de configuración de "ProductID" a "myProductID", también obtendré un error para hacer "tareas gradlew". No puedo hacer 'gradlew clean', todos simplemente fallan. Todavía estoy luchando. Como ". \ Gradlew.bat --recompile-scripts" parece que ya no existe?
yunfei
0

Tengo un problema, es posible que la prueba de limpieza de gradlew no sea igual a ADT build clean. Y ahora estoy luchando por arreglarlo.

Esto es lo que obtuve: configuré un configProductID = 11111 desde mi gradle.properties, desde mi build.gradle, agregué

resValue "string", "ProductID", configProductID

Si hago una compilación limpia desde ADT, se puede generar el recurso R.string.ProductID. Entonces puedo hacer el siguiente comando con éxito.

gradlew assembleDebug

Pero, como estoy tratando de configurar el servidor de compilación, no quiero la ayuda de ADT IDE, así que necesito evitar usar ADT build clean. Aquí viene mi problema. Ahora cambio mi nombre de recurso de "ProductID" a "myProductID", hago:

gradlew clean

Me sale un error

PS D:\work\wctposdemo> .\gradlew.bat clean

FAILURE: Build failed with an exception.

* Where:
Build file 'D:\work\wctposdemo\app\build.gradle'

* What went wrong:
Could not compile build file 'D:\work\wctposdemo\app\build.gradle'.
> startup failed:
  General error during semantic analysis: Unsupported class file major version 57

Si lo intento con:

.\gradlew.bat --recompile-scripts

Acabo de recibir un error de

Unknown command-line option '--recompile-scripts'.
Yunfei
fuente
Tengo el mismo mensaje de error hace unos minutos:> Archivo principal de clase no compatible, versión principal 57 El problema para mí fue que gradle no funciona con openJdk13 actual en Linux (uso Manjaro ... un Linux tipo Arch). Entonces, para solucionar esto, hice esto: verifiqué qué versión de Java instalé en mi PC y elegí la versión 8: sudo archlinux-java stauts sudo archlinux-java set java-8-openjdk Quizás esto ayude fuera, incluso si su sistema parece ser Windows. Intente con otra versión de SDK. Quizás también resuelva tu problema.
Suther
Hola @suther, muchas gracias por tu respuesta, he encontrado la causa raíz y solucionada, no creo que se deba a la versión JAVA. Pero como describí "gradlew clean" no es igual a "ADT clean". Mi solución fue simplemente hacer "gradlew: aplicación: dependencias", esto generará ID de recursos a partir de archivos de configuración de gradle.
Yunfei