Come cancellare la cache gradle?

Sto provando ad usare Android Studio, e la prima volta che lo avvio, ci vogliono 45 minuti per compilare … Se non esco dall’applicazione, va bene – ogni successiva compilazione / esecuzione dell’app richiederà come 45 secondi.

Ho provato a controllare alcuni dei miei cache: c’è una cartella .gradle/caches nella mia home directory, ed è come 123 MB di grandi dimensioni.

C’è anche una cartella .gradle nella cartella del mio progetto … uno dei taskArtifacts era come 200 MB. Sono spaventato solo a castrarli a caso. Quali parti delle cartelle sono sicure da eliminare?

C’è una spiegazione migliore del motivo per cui il mio Android Studio sta impiegando per sempre per eseguire l’operazione gradle assemble al primo caricamento dell’applicazione?

Devo anche cancellare la cache intellij?

Puoi tranquillamente cancellare l’intera cartella .gradle trova nella directory del progetto. Sarà ricreato ogni volta che vengono eseguite le attività. Lo stesso vale per .gradle sotto home directory. Sarà anche ricreato, ma le dipendenze devono essere scaricate di nuovo – è piuttosto dispendioso in termini di tempo.

Come vedo in vari punti sul gradle web per lo sviluppo di Android è abbastanza lento e la gente si lamenta di questo. Non ho idea di cosa sia esattamente la ragione – è così che funziona.

Non penso che le basse prestazioni siano dovute a grandi cartelle. In realtà lo aiutano ad essere più veloce.

Come sottolineato da @ Bradford20000 nei commenti, potrebbe esserci un file gradle.properties e gli script gradle globali che si trovano sotto $HOME/.gradle . In tal caso, occorre prestare particolare attenzione quando si elimina il contenuto di questa directory. La directory cache contiene la cache di build Gradle . Quindi se hai qualche errore su questo puoi cancellarlo. È su .gradle/caches

Puoi farlo su Android Studio

Per pulire le cache del sistema:

Nel menu principale, scegli File | Cache / riavvio invalido . Viene visualizzato il messaggio Invalidate Caches che informa che le cache verranno invalidate e ricostruite all’avvio successivo. Utilizzare i pulsanti nella finestra di dialogo per invalidare le cache, riavviare IntelliJ IDEA o entrambi.

https://www.jetbrains.com/idea/help/cleaning-system-cache.html

Aggiornamento: il metodo sopra cancellerà la cache di Android Studio, non la cache di Gradle . La cache di Gradle individua in

  • Su Windows: %USER_HOME%\.gradle/caches/
  • Su Mac / Unix: $HOME/.gradle/caches/

Puoi sfogliare queste directory e cancellarle manualmente o eseguirle

 rm -rf $HOME/.gradle/caches/ 

su sistema Unix. Esegui questo comando forzerà anche il download delle dipendenze.

Aggiornamento 2: Cancella la cache di build di Android del progetto corrente

Nota: file di Android Studio | Cache / riavvio invalido non cancella la cache di build di Android, quindi dovrai pulirlo separatamente.

Su Windows:

 gradlew cleanBuildCache 

Su Mac o Linux:

 ./gradlew cleanBuildCache 

La più nuova soluzione usando il compito gradle

cleanBuildCache

disponibile tramite plugin Android per Gradle, revisione 2.3.0 (febbraio 2017)

dipendenze:

  1. Grado 3.3 o superiore.
  2. Build Tools 25.0.0 o versioni successive.

più a:

https://developer.android.com/studio/build/build-cache.html#clear_the_build_cache

sfondo

Costruisci cache:

memorizza determinati output che il plug-in Android genera durante la creazione del progetto (come AAR non compressi e dipendenze remote pre-dexate). Le build pulite sono molto più veloci durante l’utilizzo della cache, in quanto il sistema di compilazione può semplicemente riutilizzare quei file memorizzati nella cache durante le build successive, invece di ricrearli. I progetti che utilizzano il plug-in Android 2.3.0 e versioni successive utilizzano la cache di build per impostazione predefinita. Per saperne di più, leggi Migliora la velocità di costruzione con Build Cache.

Nota: l’attività cleanBuildCache non è disponibile se si disabilita la cache di build.

utilizzo:

windows

 gradlew cleanBuildCache 

linux / mac

 gradle cleanBuildCache 

Android Studio / IntelliJ

 gradle tab (default on right) select and run the task or add it via the configuration window 

** gradle / gradlew sono file specifici del sistema contenenti script: vedere le informazioni di sistema su come eseguire lo script

  1. linux – https://www.cyberciti.biz/faq/howto-run-a-script-in-linux/
  2. windows – https://technet.microsoft.com/en-us/library/bb613481(v=vs.85).aspx
  3. mac https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/index.html

Il demone gradle crea anche molti file di testo di grandi dimensioni di ogni singolo registro di costruzione. Sono memorizzati qui:

~/.gradle/daemon/XX/daemon-XXXX.out.log

“XX” è la versione gradle in uso, come “4.4” e “XXXX” sono solo numeri casuali, come “1234”.

La dimensione totale può crescere fino a diverse centinaia di MB in pochi mesi . Non è ansible distriggersre la registrazione e i file non vengono automaticamente eliminati e non è necessario conservarli.

Ma puoi creare una piccola attività gradle per eliminarli automaticamente e liberare molto spazio su disco:

Aggiungi questo alla tua app/build.gradle :

 android { buildTypes { ... } // Delete large build log files from ~/.gradle/daemon/XX/daemon-XXX.out.log // Source: https://discuss.gradle.org/t/gradle-daemon-produces-a-lot-of-logs/9905 def gradle = project.getGradle() new File("${gradle.getGradleUserHomeDir().getAbsolutePath()}/daemon/${gradle.getGradleVersion()}").listFiles().each { if (it.getName().endsWith('.out.log')) { // println("Deleting gradle log file: $it") // Optional debug output it.delete() } } } 

Per vedere quali file vengono eliminati, puoi vedere l’output di debug in Android Studio -> Visualizza -> Strumenti Windows -> Crea. Quindi premere il pulsante “Toggle View” su quella finestra per mostrare il testo in uscita.

Nota che Gradle Sync o qualsiasi Gradle Build attiveranno la cancellazione del file.

Un modo migliore sarebbe spostare automaticamente i file nel cestino / cestino, o almeno copiarli prima in una cartella del cestino. Ma non so come farlo.