Desidero installare un'app di diagnostica da adb
e recuperare i dati da esso all'interno di uno script bash. So come avviare un'attività da adb
, ma non riesco a trovare alcun modo per ottenere i dati indietro a meno che forse se stampo su logcat
e analizziamo l'output, ma suona come un hack. C'è un modo per ricevere i dati da un'attività avviata utilizzando adb
?Inviare i dati allo script che ha avviato l'attività tramite adb shell inizio
risposta
Se i dati che si desidera inviare di nuovo al vostro script di automazione potrebbe essere serializzato in una stringa inferiore a 4k - usare logcat
è una scelta naturale. Basta fare la vostra attività per stampare i dati al registro con Log.i("TAG", "DATA=" + your_data_string);
e quindi utilizzare i seguenti comandi nello script di automazione per catturare l'output:
# clear the logcat buffer
adb logcat -c
# start your activity
adb shell am start <INTENT>
# this line will block until a string with "TAG" tag and "Info" priority and
# starting with "DATA=" is printed to the main log
adb shell 'logcat -b main -v raw -s TAG:I | (grep -q ^DATA= && kill -2 $((BASHPID-1)))'
# now you can capture the data and process it
DATA=$(adb logcat -d -b main -v raw -s TAG:I | grep ^DATA=)
C'è un po 'In/Out bash campione:
prima preparazione:
tmpfile=$(mktemp /tmp/adb-XXXXXXXXX)
exec 5> >(adb shell >$tmpfile)
exec 6<$tmpfile
rm $tmpfile
allora si potrebbe scrivere a &5
e leggere da &6
:
read -t .1 -u 6 foo;echo $foo
[email protected]:/ $
read -t .1 -u 6 foo;echo $foo
echo date >&5
read -t .1 -u 6 foo;echo $foo
date
read -t .1 -u 6 foo;echo $foo
Sat Dec 17 18:20:35 CET 2016
Nota: I rm $tmpfile
per motivi di sicurezza, ma mentre i descrittori rimangono aperti, è possibile utilizzarli (opzione timeout di read
funzionano bene con while
anello):
>&5 echo uptime
while read -t .1 -u 6 foo;do echo $foo;done
uptime
up time: 08:16:42, idle time: 01:20:19, sleep time: 06:47:13
E
ls -l $tmpfile
ls: cannot access /tmp/adb-hbmJrFVX4: No such file or directory
ls -l /proc/self/fd
total 0
lrwx------ 1 user user 64 Dec 17 18:24 0 -> /dev/pts/8
l-wx------ 1 user user 64 Dec 17 18:24 1 -> pipe:[22316547]
lrwx------ 1 user user 64 Dec 17 18:24 2 -> /dev/pts/8
l-wx------ 1 user user 64 Dec 17 18:24 5 -> pipe:[22316558]
lr-x------ 1 user user 64 Dec 17 18:24 6 -> /tmp/adb-hbmJrFVX4 (deleted)
Al termine, chiudere tutto:
>&5 echo exit
while read -t .1 -u 6 foo;do echo $foo;done
exit
exec 5>&-
exec 6<&-
Quanto è pertinente la domanda originale? –
Sembra che non ho capito bene la domanda, ma come * usando adb per diagnostica * medio * USB bridge connected *, se vuoi eseguire il debug di qualcosa tramite bridge, questo è un modo efficiente [tag: bash] per scrivere script interattivo tramite * adb * . –
Usando lo stesso principio funziona con 'ssh', ma per mysql, ho eseguito' exec 5>> (stdbuf -oL mysql -anu username database> $ tmpfile) ' –
- 1. Avvia uno script come root tramite ADB
- 2. Hudson: come passare i parametri allo script di shell
- 3. adb shell e adb push per avd specifico
- 4. Come trasmettere l'intento con gli extra tramite la shell ADB?
- 5. script di shell/batch per dirigere i comandi ad adb shell
- 6. inviare SMS tramite adb shell di servizio di chiamata ismi Android 4.1.2
- 7. valore di ritorno dallo script python allo script di shell
- 8. Script di shell per inviare e-mail
- 9. ArrayAdapter: dati Json da inviare allo spinner
- 10. Ottieni nome/etichetta dell'applicazione tramite shell o terminale ADB
- 11. impossibile inviare dati json tramite ajax
- 12. Wget da adb shell
- 13. Invio di comandi AT tramite ADB Android
- 14. Ottenere il database SQLite tramite la shell adb in cmd
- 15. Wipe data/factory reset tramite ADB
- 16. PHP - Reindirizzare e inviare dati tramite POST
- 17. Cosa fa 'adb shell start/stop' fare?
- 18. Come posso inviare dati a un processo avviato tramite Net :: SSH su stdin?
- 19. Come rispondere ad una chiamata tramite adb
- 20. Passa direttamente i parametri allo script pbs
- 21. Refresh Android mediastore tramite adb
- 22. Come disattivare Wifi tramite ADB?
- 23. Completamento scheda in shell adb
- 24. Come posso passare argomenti allo script di shell?
- 25. AWK: valore di ritorno allo script di shell
- 26. Come traceroute in adb shell?
- 27. Come verificare se launchd ha avviato lo script?
- 28. Come inviare i dati JSON tramite API HTTP utilizzando VBScript?
- 29. Come inviare i dati tramite POST utilizzando in Zend_Rest_Client
- 30. Android: come cancellare la cache delle app e mantenere i dati degli utenti tramite adb?
stampa a Logcat e poi l'analisi per il risultato non è un hack –
@ AlexP. Ok, in tal caso puoi o qualcuno dirmi come aprire logcat e aspettare un risultato? Se eseguo 'logcat -d' immediatamente dopo' am start' l'output non sarà ancora lì, e preferirei non immaginare per quanto tempo il processo richiederà l'avvio. –
basta usare 'am start -W' –