5

Questo è correlato a "Uninstall old Android SDK versions", eccetto che vorrei farlo su un server CI Linux senza testa (poco spazio su disco).Disinstallazione di parti selezionate di Android SDK sulla riga di comando

Lo strumento da riga di comando android fornisce opzioni per la rimozione di parti precedenti dell'SDK? Con un rapido sguardo, le uniche cose che può eliminare sono gli AVD. Ho trascurato qualcosa?

In alternativa, credo che potrei semplicemente eliminare manualmente le cose da sotto SDK_HOME. Ma quali cose sono sicure da eliminare? Altri candidati di questi?

  • Ho solo bisogno di supporto a livello di API 14 e fino, quindi suppongo che posso eliminare roba sotto platforms/ come android-3 e android-4.
  • docs (800MB), samples (300 MB)
  • Come su system-images? Ho bisogno per es. android-18/armeabi-v7a/ e android-18/x86/ se voglio solo creare build APK automatici (senza elementi di emulazione) usando Gradle (e Ant)?

Almeno sulla eliminazione docs completamente, la prossima volta che mi sono imbattuto android update sdk --no-ui, ha cominciato andarli a prendere di nuovo:

Downloading Documentation for Android SDK, API 19, revision 1 

Posso evitare di aggiungere update parti posteriori del SDK che ho buttato via?

Disclaimer: sì, il disco è economico e in realtà dovrei aggiungere altro. Ma adesso su questo server particolare (disco 8.5G) Non ho questa opzione, eppure mi piacerebbe ancora farlo funzionare per Android 19 build ...

+0

Non è sicuro se si sta utilizzando Windows o Linux (o qualcos'altro) – CJBS

+1

prima frase della questione : "[...] su un server CI Linux senza testa" – Jonik

risposta

2

Sembra che sia necessario scaricare solo le parti di cui hai bisogno. Fare uno android update sdk --no-ui senza altri parametri scarica tutto, e quindi è dispendioso in termini di tempo e di sprechi.

Il parametro --filter per determinare i pacchetti necessari e utilizzarli ogni volta che si desidera eseguire un aggiornamento. C'è una spiegazione più dettagliata su come fare questo here (e anche di più sul comando hereandroid).

Se si cambiano periodicamente i componenti necessari (ad esempio, il targeting di una piattaforma diversa), è possibile creare uno script che elimina i componenti nelle varie cartelle non necessarie (ad esempio API sotto android-sdk-linux/platforms) e quindi ricreare con solo i componenti che vuoi

Il comando android list sdk -e fornisce un elenco esteso di pacchetti che è possibile utilizzare con il parametro --filter e consente quindi l'installazione di componenti specifici.

Dopo aver esaminato an excellent answer metodo automatico per utilizzare il comando expect per accettare automaticamente le richieste di licenza, ho finito con questo per installare e aggiornare i componenti di cui ho bisogno, senza scaricare tutto il resto (su Ubuntu):

expect -c ' 
set timeout -1; 
spawn /opt/android-sdk-linux/tools/android update sdk --no-ui --filter tools,build-tools-20.0.0,platform-tools,android-16,extra-android-support,extra-android-m2repository; 
expect { 
    "Do you accept the license" { exp_send "y\r" ; exp_continue } 
    eof 
} 
' 

Nota i componenti tools,build-tools-20.0.0,platform-tools,android-16,extra-android-support,extra-android-m2repository specificati con il parametro --filter che limitano il download solo a queste parti.

L'esecuzione di questo script consente di scaricare solo quei componenti. Esecuzione di nuovo determina che nulla ha bisogno di un aggiornamento, ma dà un insieme confuso di messaggi:

Error: Ignoring unknown package filter 'tools' 
Error: Ignoring unknown package filter 'build-tools-20.0.0' 
Error: Ignoring unknown package filter 'platform-tools' 
Error: Ignoring unknown package filter 'android-16' 
Error: Ignoring unknown package filter 'extra-android-support' 
Error: Ignoring unknown package filter 'extra-android-m2repository' 
Warning: The package filter removed all packages. There is nothing to install. 
     Please consider trying to update again without a package filter. 

Questi messaggi solo dire che nulla è stato aggiornato - componenti inclusi nella specifica --filter non sono effettivamente disinstallato.

3

Tutto tranne gli strumenti/può essere ri-installato in genere con un

android list sdk -a 

e

android update sdk --no-ui -a --filter <#index> 

io spesso soffiare via i miei add-on/e costruire-tools/cartelle e reinstallare il mio componenti aggiuntivi/e strumenti di costruzione /. Se avete bisogno di automatizzare accettato la licenza, un altro piccolo trucco è il seguente, per lo meno se si sta installando un'alla volta:

android update sdk --no-ui -a --filter <#index> 0<<EOF 
y 
EOF 

Il comando "Android" si vive dentro "Strumenti SDK" pacchetto o tools/directory, quindi non è possibile rimuoverlo, perché non è possibile installare altro. In genere, non rimuoverei platform-tools /, poiché non è possibile creare nulla, a meno che non si stia installando una versione nuova/precedente. Se si guarda sotto < sdk-cartella >/SDK Readme.txt, si vedrà quanto segue nel primo paragrafo di confermare questa:

Benvenuti nel SDK di Android!

L'archivio di Android SDK contiene inizialmente solo gli strumenti di base dell'SDK. Non contiene una piattaforma Android o librerie di terze parti. In realtà, non ha nemmeno tutti gli strumenti necessari per sviluppare un'applicazione.

Per iniziare a sviluppare applicazioni, è necessario installare Platform-tools e almeno una versione della piattaforma Android, utilizzando l'SDK Manager.

1

Da quello che ho potuto raccogliere, si può solo eliminare le directory in /platforms/skins e /system-images