tutorial studio para now must flavors flavor descargar configurar belong all build gradle google-drive-sdk global

build - para - gradle version android studio



Directorio de compilaciĆ³n global de Gradle (3)

Quiero saber si es posible configurar Gradle para usar un directorio de build global para todos los proyectos. Necesito esto porque guardo todos mis proyectos en la carpeta de Google Drive (para respaldo y acceso rápido desde otros dispositivos) y cuando compilo el proyecto, Google Drive está cargando la CPU mientras sincronizo el directorio de build proyecto. Así que quiero mover los directorios de build fuera de Google Drive.

También esta opción será útil para aquellos que deseen compilar proyectos utilizando un disco RAM como almacenamiento para el directorio de build .


Gracias a Peter Niederwieser. Decidí publicar mi propia respuesta debido a detalles adicionales.

Para configurar el directorio de compilación global , debe agregar estas líneas a ~ / .gradle / init.gradle :

gradle.projectsLoaded { rootProject.allprojects { buildDir = "/path/to/build/${rootProject.name}/${project.name}" } }

Buena opción para tener un directorio de build global en el disco RAM .

Si eres usuario de macOS (OS X) puedes hacer esto con:

diskutil erasevolume HFS+ ''RAMDiskName'' `hdiutil attach -nomount ram://XXXXXX`

donde XXXXXX es un recuento de bloques de 512 bytes (por ejemplo, es 262114 para un disco RAM de 128MB)

Y la línea buildDir será:

buildDir = "/Volumes/RAMDiskName/${rootProject.name}/${project.name}"

También puedes extender la configuración a:

  1. obtenga la ruta de compilación global desde la variable de entorno o el respaldo para build directorio dentro del directorio del proyecto;
  2. incluir grupo de proyectos en la ruta, esto hace que la ruta sea más única, especialmente si tiene varios proyectos con el mismo nombre.

~ / .gradle / init.gradle :

def configProject(p, buildDir) { p.buildDir = "${buildDir}/${p.name}" p.subprojects { s -> configProject(s, "${p.buildDir}") } } def buildDir = System.env.GRADLE_GLOBAL_BUILD_PATH if (!buildDir?.trim()) { buildDir = "build" } gradle.projectsLoaded { if (ext.has("group")) { buildDir += "/${ext.group}" } configProject(rootProject, buildDir) }

Y en la configuración del proyecto.

gradle.ext.group = ''com.example.yourproject''

También puede usar esta configuración en el proyecto build.gradle para configurar el grupo de proyecto, pero esto es opcional:

allprojects { ... group gradle.ext.group }


También podrías ir por el camino opuesto. Reemplace la carpeta de build con una carpeta global.

  1. Eliminar la carpeta de build del proyecto
  2. mklink /d ...disk/path/to/project/build ...RAM/path/to/project (o ln en Unix)
  3. Construir rapido

Puede automatizar esto en la tarea de clean , por lo que una gradlew clean limpia el contenido de la carpeta y recrea el enlace.

Con algunas pruebas rápidas, parece que Google Drive no reconoce el directorio de enlaces de unión en Windows. Se sincronizarán las carpetas, pero no los contenidos. Extrañamente, si subo archivos a Drive en esas carpetas, se sincronizan en la copia local. Pero, si elimino el archivo sincronizado del disco, la eliminación no se sincroniza de nuevo. Parece que los enlaces hacen que Drive sea de una manera.


build.gradle:

def baseDir = "/global/build/dir/$project.name" buildDir = baseDir + "/root" subprojects { buildDir = baseDir + project.path.replaceFirst(":", "/").replace(":", ".") }