2015-05-06 22 views
6

Ho installato il plug-in Emulatore Android per Jenkins. Posso costruire e testare un progetto Android. My Jenkins è in esecuzione su un server Ubuntu (accesso solo con terminale). Il progetto è tratto da Github. Ora voglio usare l'emulatore. Questa è la mia configurazione:Errore Emulatore Android su Jenkins: dispositivo offline

  • Android versione del sistema operativo: 4.4
  • densità dello schermo: 160
  • Risoluzione dello schermo: 480x800
  • target ABI: armeabi-V7A

Ho anche installato adb e ha il seguente comando:

/opt/android-sdk-linux/tools/android update sdk --no-ui 

Ma non funziona:

> /usr/bin/git rev-list 3440b28279e2e95113ce1c9499d9d881e76f6810 # timeout=10 
$ /opt/android-sdk-linux/tools/android list target 
[android] Using Android SDK: /opt/android-sdk-linux 
$ /opt/android-sdk-linux/platform-tools/adb start-server 
* daemon not running. starting it now on port 7767 * 
* daemon started successfully * 
$ /opt/android-sdk-linux/platform-tools/adb start-server 
[android] Starting Android emulator 
$ /opt/android-sdk-linux/tools/emulator -ports 7765,7766 -prop persist.sys.language=en -prop persist.sys.country=US -avd hudson_en-US_160_WVGA_android-19_armeabi-v7a -no-snapshot-load -no-snapshot-save -no-window 
Failed to Initialize backend EGL display 
Could not initialize emulated framebufferemulator: WARNING: Could not initialize OpenglES emulation, using software renderer. 
emulator: warning: opening audio output failed 

$ /opt/android-sdk-linux/platform-tools/adb connect localhost:7766 
connected to localhost:7766 
[android] Waiting for emulator to finish booting... 
$ /opt/android-sdk-linux/platform-tools/adb -s localhost:7766 shell getprop init.svc.bootanim 
error: device offline 
$ /opt/android-sdk-linux/platform-tools/adb connect localhost:7766 
$ /opt/android-sdk-linux/platform-tools/adb -s localhost:7766 shell getprop init.svc.bootanim 
error: device offline 
... 
$ /opt/android-sdk-linux/platform-tools/adb connect localhost:7766 
[android] Interrupted while waiting for emulator to finish booting. 
[android] Emulator was shut down before it finished booting 
$ /opt/android-sdk-linux/platform-tools/adb disconnect localhost:7766 
[android] Stopping Android emulator 
$ /opt/android-sdk-linux/platform-tools/adb kill-server 
Archiving artifacts 
Recording test results 
ERROR: Publisher hudson.tasks.junit.JUnitResultArchiver aborted due to exception 
hudson.AbortException: Test reports were found but none of them are new. Did tests run? 
For example, AndroidManifest.xml is 10 min old 

C'è qualcuno con una spiegazione per questo problema? Grazie

+0

Vedere anche http://stackoverflow.com/questions/23699433/android-emulator-jenkins-plugin-not-working –

risposta

1

Affronto lo stesso problema, anche quando provo i comandi manualmente. Ma ho potuto risolvere il problema quando si utilizza le porte come 5555,5556 in base a tale commento: JENKINS-27456

C'è una richiesta di pull associato: PR on github

vedrò se ho tempo per ottenere e testare una build con quella patch e ti farà sapere se risolve il problema.

+0

Puoi fornire un esempio di codice qui. – Ajit

+0

Ancora lavorando su di esso (non a tempo pieno). Ho notato che "adb connect" restituisce "connected" una volta che ha aperto il socket e ha inviato la sua richiesta "CNXN", ma prima di ricevere la risposta "CNXN". Quindi, se il successivo comando adb viene eseguito prima, fallisce. Ma non so perché quella risposta qualche volta arrivi immediatamente e qualche volta dopo 5-6 secondi. Indagare. Pubblicherò aggiornamenti (e invierò un PR se pertinente) non appena avrò qualcosa di interessante da segnalare –

+0

Quindi, riesco a far sì che il plugin abbia qualcos'altro che "dispositivo offline" cambiando un po 'il plugin dell'emulatore e aggiungendo un "Thread .sleep (10 * 1000) "dopo il comando adb connect. Ma a quel punto, l'emulatore ottiene uno stato "in esecuzione" per il bootanim e si aspetta uno stato "fermato". –