2013-05-28 7 views
5

Background: ho creato uno script headless per workstation con avvio in OSX, che installa android-sdk tramite homebrew e configura un ambiente Chef-solo. Lo dico perché qualsiasi strumento sensibile/file ospitato in remoto con nome prevedibile è sul tavolo per le soluzioni.Targeting di una versione specifica dell'immagine di sistema utilizzando l'utilità della riga di comando 'android'?

Il mio problema: Ho bisogno dell'immagine del sistema API 16 di Android e non riesco a trovare lo spazio dei nomi flags/package corretto usando l'utilità CLI android. Sono stato in grado di installare la piattaforma SDK 4.1.2/API 16 utilizzando android update sdk -u --filter android-16, ma ho ancora bisogno dell'immagine di sistema per l'emulazione.

android update sdk -u --filter system-image installa API 17/4.2.2.

Vorrei evitare di eseguire una soluzione basata su grep su esecuzione android list sdk, non che sembra essere comunque un'opzione (android list sdk | grep 'API 16' non porta frutto).

Ho guardato il file XML che l'utilità android CLI chiama per enumerare la sua lista dei pacchetti (http://dl-ssl.google.com/android/repository/sys-img/x86/sys-img.xml) e ho trovato un collegamento al file che credo io voglio, http://dl-ssl.google.com/android/repository/sys-img/x86/sysimg_x86-16_r01.zip, ma io non sono entusiasta al parse XML + aggira l'opzione di utilità esistente.

Ho visto this other SO post e sebbene sia stato utile, non copre completamente ciò che sto tentando di fare.

Mi manca un flag o non utilizzo il nome del pacchetto errato? In tal caso, quale fonte della documentazione mi sono perso? Come potrei risolvere questo per me stesso in futuro?

risposta

7

Ora è possibile utilizzare i singoli identificativi del pacchetto. Per il vostro caso, uno dei:

echo y | android update sdk --no-ui --filter sys-img-x86-android-16 --all 
echo y | android update sdk --no-ui --filter sys-img-armeabi-v7a-android-16 --all 
echo y | android update sdk --no-ui --filter sys-img-mips-android-16 --all 

Il --all è necessaria perché senza di essa, android ignorerà i pacchetti che ritiene vecchio anche se corrispondono al filtro.

È possibile trovare un elenco degli identificatori con android list sdk --extended --all

+0

Buono a sapersi; grazie per aver trovato il tempo di aggiungere una risposta Ho accettato la tua risposta per aiutare i futuri spettatori. Lascerò la mia risposta qui sotto nel caso in cui questa opzione venga ripristinata, non funzioni o qualcuno si trovi su una vecchia versione di strumenti Android. –

2

Una soluzione un po 'ritoccata, ma ecco come può essere fatto: ordinare le cose nella gestione dei comandi CLI.

Prendi l'API Android 16, 4.1.2 Platform SDK:

echo -ne 'y' | android update sdk -u --filter android-16

Senza API 17 installato, installare immediatamente l'immagine del sistema. Apparentemente, questo seguirà a seconda di quale la versione più recente di strumenti di Platform SDK capita di rispondere sulla scatola:

echo -ne 'y' | android update sdk -u --filter system-image

Se volete API 17, installare il comando Android-17 e quindi eseguire il sistema-immagine di installazione.