私は、デバイスのリストを反復し、adbシェルコマンドをAndroidデバイスに実行する単純なbashスクリプトを持っています。以下のコードは次のとおりです。実行したときADBコマンドを実行しているBashスクリプトはデバイスのリストを反復しません
echo "Displaying devices to be configured:"
adb devices | sed "1d ; $ d"
echo ""
echo "###########################"
echo "# #"
echo "# Starting configuration! #"
echo "# #"
echo "###########################"
echo ""
while read -r udid device usb product model device2; do
echo ""
echo $usb
echo ""
# INSTALL THE APPS
adb -s "$usb" install ./src/apps/1.apk
adb -s "$usb" install ./src/apps/quicksupport.apk
# SET WIFI OFF
adb -s "$usb" shell settings put global wifi_on 0
# SET SOUND TO 0
adb -s "$usb" shell service call audio 7 i32 3 i32 0 i32 1
# SET AUTO TIME ZONE OFF
adb -s "$usb" shell settings put global auto_time_zone 0
# SET INSTALL NON MARKET APPS ON
adb -s "$usb" shell settings put global install_non_market_apps 1
# REBOOT
adb -s "$usb" reboot
done < <(adb devices -l | sed "1d; $ d")
echo ""
echo "###########################"
echo "# #"
echo "# Configuration complete! #"
echo "# #"
echo "###########################"
echo ""
は、コードが正常に一つのデバイス上のすべての構成を実行します。二つのデバイスに差し込まれた場合、以下のように、出力が読み:
Displaying devices to be configured:
ABCDEF device
ABCDEF device
###########################
# #
# Starting configuration! #
# #
###########################
usb:336592896X
[100%] /data/local/tmp/1.apk
pkg: /data/local/tmp/1.apk
Failure [INSTALL_FAILED_ALREADY_EXISTS]
[100%] /data/local/tmp/quicksupport.apk
pkg: /data/local/tmp/quicksupport.apk
Failure [INSTALL_FAILED_ALREADY_EXISTS]
ABCDEF device usb:337641472X product:msm8960 model:msm8960 device:msm8960
Result: Parcel(00000000 '....')
###########################
# #
# Configuration complete! #
# #
###########################
adb devices -l
コマンドのループから抜け出すより余りを返すようです。これはbashの問題ですか?これはadbの問題ですか?私は数日間このことを理解しようとしてきました。
注:Result: Parcel(00000000 '....')
の出力は、サウンドがゼロに設定された直後に出力されます。
注:Failure [INSTALL_FAILED_ALREADY_EXISTS]
は、アプリが既にインストールされているために発生します。それは私が心配していることではありません。
注:これは、同じことをやってもう少し効率的でエラーが発生しにくい方法ですadb devices -l | hexdump -C
00000000 4c 69 73 74 20 6f 66 20 64 65 76 69 63 65 73 20 |List of devices |
00000010 61 74 74 61 63 68 65 64 0a 30 31 32 33 34 35 36 |attached.|
00000020 37 38 39 41 42 43 44 45 46 20 20 20 20 20 20 20 |789ABCDEF |
00000030 64 65 76 69 63 65 20 75 73 62 3a 34 33 37 33 38 |device usb:43738|
00000040 37 32 36 34 58 20 70 72 6f 64 75 63 74 3a 6d 73 |7264X product:ms|
00000050 6d 38 39 36 30 20 6d 6f 64 65 6c 3a 6d 73 6d 38 |m8960 model:msm8|
00000060 39 36 30 20 64 65 76 69 63 65 3a 6d 73 6d 38 39 |960 device:msm89|
00000070 36 30 0a 30 31 32 33 34 35 36 37 38 39 41 42 43 |60.ABC|
00000080 44 45 46 20 20 20 20 20 20 20 64 65 76 69 63 65 |DEF device|
00000090 20 75 73 62 3a 33 33 36 35 39 32 38 39 36 58 20 | usb:336592896X |
000000a0 70 72 6f 64 75 63 74 3a 6d 73 6d 38 39 36 30 20 |product:msm8960 |
000000b0 6d 6f 64 65 6c 3a 6d 73 6d 38 39 36 30 20 64 65 |model:msm8960 de|
000000c0 76 69 63 65 3a 6d 73 6d 38 39 36 30 0a 0a |vice:msm8960..|
000000ce
。 'echo $ usb'は' usb:336592896X'を返します。これは、デバイスに正常に接続するために使用しているUSBの名前です。 2番目のデバイスの '$ usb'変数がリストされていないことに注意してください。 – jagdpanzer
投稿 'adb devices -l |ヘキサダンプ-C' –
@AlexP。あなたのために掲示される。 – jagdpanzer