comandos - gradle android
¿Cómo puedo forzar a Gradle a volver a descargar las dependencias? (17)
Creo que Gradle 2.14.1 soluciona el problema. La respuesta aceptada es correcta, pero hay un error en gradle con las dependencias de actualización. 2.14.1 arregla eso.
Consulte https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556
¿Cómo puedo decirle a gradle que vuelva a descargar las dependencias de los repositorios?
Debe volver a descargarlo para poder descargar y reemplazar manualmente el archivo dañado y sincronizar nuevamente su proyecto. Vaya a esta ubicación C: / users [nombre de usuario] .gradle / wrapper / dist / gradle3.3-all / 55gk2rcmfc6p2dg9u9ohc3hw9 / gradle-3.3-all.zip Aquí elimine gradle3.3allzip y reemplácelo volviendo a descargar desde este sitio https://services.gradle.org/distributions/ Encuentre el mismo archivo y descárguelo y péguelo en esa ubicación Luego sincronice su proyecto. Espero que funcione para usted también.
En lugar de eliminar su caché de gradle completo, como sugieren algunas respuestas, puede eliminar el caché para un grupo específico o una identificación de artefacto. Agregué la siguiente función a mi .bash_profile
:
deleteGradleCache() {
local id=$1
if [ -z "$id" ]; then
echo "Please provide an group or artifact id to delete"
return 1
fi
find ~/.gradle/caches/ -type d -name "$id" -prune -exec rm -rf "{}" /; -print
}
Uso:
$ deleteGradleCache com.android.support
Luego, en la siguiente compilación o si vuelve a sincronizar, gradle volverá a descargar las dependencias.
Esto funcionó para mí. Asegúrese de que Gradle no esté configurado como fuera de línea deseleccionando el botón en Archivo> Configuraciones> Gradle> Trabajo sin conexión.
Agregue esto al nivel superior de su build.gradle, es bueno tener dependencias por encima de
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, ''seconds''
}
Me aseguré de que mis dependencias estén escritas así:
implementation(''com.github.juanmendez:ThatDependency:ThatBranch-SNAPSHOT'') {
changing = true
}
A partir de entonces, abro el panel de Gradle en Android Studio y hago clic en el botón de flechas del círculo azul. Siempre puedo ver mis actualizaciones obteniendo una nueva copia nueva.
Hay 2 formas de hacerlo:
- Usando la opción de línea de comando para actualizar dependencias cashe.
- Puede eliminar la memoria caché local donde artefasts son memorias caché por Gradle y la creación de disparos
Utilizando la opción --refresh-dependencies :
./gradlew build --refresh-dependencies
Explicación breve: la opción de actualización de dependencias le dice a Gradle que ignore todas las entradas almacenadas en caché para los módulos y artefactos resueltos.
Explicacion larga
- Con las dependencias de actualización, Gradle siempre llegará al servidor remoto para buscar artefactos actualizados: sin embargo, Gradle evitará descargar un archivo donde ya exista el mismo archivo en la memoria caché.
- First Gradle realizará una solicitud HEAD y verificará si el servidor informa que el archivo no ha cambiado desde la última vez (si la "longitud del contenido" y la "última modificación" no han cambiado). En este caso, aparecerá el mensaje: "El recurso en caché está actualizado (última modificación: {})".
- El siguiente Gradle determinará la suma de comprobación remota si es posible (ya sea desde la solicitud HEAD o descargando un archivo ''.sha1''). Si esta suma de comprobación coincide con otro archivo ya descargado (de cualquier repositorio), Gradle simplemente copiará el archivo en el archivo. caché, en lugar de volver a descargar. En este caso, aparecerá el mensaje: "" Se encontró un recurso disponible localmente con una suma de comprobación coincidente: [{}, {}] ".
Usando delete: cuando borras caches
rm -rf $HOME/.gradle/caches/
Simplemente limpia todos los frascos en caché y las sumas sha1 y Gradle se encuentra en una situación en la que no hay artefactos en su máquina y tiene que descargar todo. Sí, funcionará al 100% por primera vez, pero cuando se lance otro SNAPSHOT y forme parte de su árbol de dependencias, se enfrentará nuevamente frente a la opción de actualizar o purgar los cachés.
Mb Soy demasiado tarde, sin embargo, mi solución es para un repositorio único. Creo que eliminar ~ / .gradle / * es una exageración. El problema con el que me topé fue que estaba borrando el directorio donde estaban las fuentes y Gradle estaba obteniendo otra versión que no era de nexus. Para evitar que corra el siguiente:
~/.gradle$ find . -type d -name ''group.plugins.awssdk'' ./caches/modules-2/files-2.1/group.plugins.awssdk ./caches/modules-2/metadata-2.23/descriptors/group.plugins.awssdk ~/.gradle$ rm -r ./caches/modules-2/files-2.1/group.plugins.awssdk ./caches/modules-2/metadata-2.23/descriptors/group.plugins.awssdk
Después de eso, Gradle está arrastrando archivos desde Nexus.
Para la mayoría de los casos, simplemente reconstruir el proyecto debería hacer el truco. A veces tiene que ejecutar ./gradlew build --refresh-dependencies
como ya han mencionado varias respuestas (lleva mucho tiempo, dependiendo de la cantidad de dependencias que tenga). Sin embargo, a veces ninguno de ellos funcionará: la dependencia simplemente no se actualizará. Entonces, puedes hacer esto:
- Eliminar la dependencia de su archivo de gradle
- Ejecute / depure su proyecto y espere a que falle (con el motivo
NonExistingClass
) - Pulsa "construir proyecto" y espera a que termine con éxito.
- Ejecutar / depurar una vez más
Esto es ridículo y parece una locura, pero en realidad uso este procedimiento a diario, simplemente porque la dependencia que necesito puede actualizarse docenas de veces y ninguna de las soluciones adecuadas tendría ningún efecto.
Puede decirle a Gradle que vuelva a descargar algunas dependencias en el script de compilación marcando la dependencia como "cambiante". Luego, Gradle buscará actualizaciones cada 24 horas, pero esto se puede configurar utilizando la resolución DSL de estrategia. Me parece útil usar esto para compilaciones SNAPSHOT o NIGHTLY.
configurations.all {
// Check for updates every build
resolutionStrategy.cacheChangingModulesFor 0, ''seconds''
}
Expandido:
dependencies {
compile group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true
}
Condensado:
compile(''group:projectA:1.1-SNAPSHOT'') { changing = true }
Encontré esta solución en este hilo del foro .
Puedes hacerlo asi
https://marschall.github.io/2017/04/17/disabling-gradle-cache.html
Para citar desde Deshabilitar el Gradle Build Cache
El caché de compilación de Gradle puede ser una gran cosa cuando está construyendo regularmente proyectos grandes con Gradle. Sin embargo, cuando solo ocasionalmente se crean proyectos de código abierto, puede volverse grande rápidamente.
Para deshabilitar el caché de compilación de Gradle, agregue la siguiente línea a
~/.gradle/gradle.properties
org.gradle.caching=false
Puede limpiar el caché existente con
rm -rf $HOME/.gradle/caches/ rm -rf $HOME/.gradle/wrapper/
Si está utilizando eclipse y si desea forzar el eclipse para que vuelva a cargar las dependencias, puede intentar el siguiente comando
gradlew clean cleaneclipse build eclipse --refresh-dependencies
Si está utilizando una versión reciente de Gradle, puede usar la opción --refresh-dependencies.
./gradlew build --refresh-dependencies
Puede consultar el manual de Gradle .
La opción --refresh-dependencies le dice a Gradle que ignore todas las entradas almacenadas en caché para los módulos y artefactos resueltos. Se realizará una nueva resolución en todos los repositorios configurados, con las versiones dinámicas recalculadas, los módulos actualizados y los artefactos descargados.
Uno puede eliminar la carpeta con los tarros en caché.
En mi caso, en Mac, la biblioteca se almacenó en caché en la ruta:
/Users/MY_NAME/.gradle/caches/modules-2/files-2.1/cached-library-to-remove
Eliminé la carpeta de la biblioteca en caché ("cached-library-to-remove" en el ejemplo anterior), eliminé la carpeta de compilación de mi proyecto y la compilé nuevamente. Biblioteca nueva fue descargada entonces.
eliminar este directorio:
C:/Users/[username]/.gradle
Para Mac
./gradlew build --refresh-dependencies
Para ventanas
gradlew build --refresh-dependencies
También puede probar gradlew assembleDevelopmentDebug --refresh-dependencies
Para Windows ... con el fin de realizar dependencias específicas de la descarga de Gradle:
elimine las dependencias que desea volver a descargar del directorio a continuación:
C:/Users/[username]/.gradle/caches/modules-2/files-2.1
eliminar todos los directorios de metadatos en la ruta:
C:/Users/[username]/.gradle/caches/modules-2/metadata-*
ejecute
gradle build
(ogradlew build
si usa gradle wrapper) en el directorio raíz del proyecto.
nota: los números en las rutas de archivo anteriores pueden ser diferentes para usted.
Para aquellos que se preguntan dónde ejecutar los comandos de gradle:
Abra Android Studio -> Haga clic en Terminal (Lo encontrará en la base de Android Studio) -> Se abrirá la herramienta de comando ---> Escriba su comando (compilación de gradlew - dependencias de actualización)
En general, puede actualizar las dependencias en su caché con la opción de línea de comando --refresh-dependencies . También puede eliminar los archivos en caché en ~/.gradle/caches
. Con la siguiente compilación, Gradle intentaría descargarlos de nuevo.
¿Cuál es su caso de uso específico? ¿Utiliza versiones de dependencia dinámica o versiones SNAPSHOT?
En los sistemas Unix, puede eliminar todos los artefactos existentes (artefactos y metadatos) que Gradle ha descargado usando:
rm -rf $HOME/.gradle/caches/