如何等待ADB推送完成?
How to wait for ADB push to complete?
一些自动化设置需要将文件加载到 Android 设备上。当 ADB 推送完成时,内部存储器不会自动刷新。
我当前的脚本同时为每个设备依次循环执行 ADB 命令,然后休眠并通过 action.MEDIA_MOUNTED 广播触发内存扫描:
adb devices | while read line
do
if [ ! "$line" = "" ] && [ `echo $line | awk '{print }'` = "device" ]
then
device=`echo $line | awk '{print }'`
echo "$device $@ ..."
#Additional ADB commands
#Load files
adb -s $device push home/test/test-automation-agent/loadondevice/. /sdcard &
fi
done
#Wait for push to complete
sleep 30
adb devices | while read line
do
if [ ! "$line" = "" ] && [ `echo $line | awk '{print }'` = "device" ]
then
device=`echo $line | awk '{print }'`
echo "$device $@ ..."
#Trigger refresh of internal storage
adb -s $device shell am broadcast -a android.intent.action.MEDIA_MOUNTED -d file://mnt/sdcard
fi
done
执行 ADB 推送所需的时间可能会发生巨大变化。我想用检测 ADB 推送完成并执行广播的东西替换睡眠。
感谢任何帮助。
删除 sleep 30
并改为放置 wait
以等待所有 children 退出。
ADBDevices () {
adb devices | awk -F"\t" '/\tdevice$/{print }'
}
ADBPushAndScan () {
adb -s push home/test/test-automation-agent/loadondevice/. /sdcard
adb -s shell am broadcast -a android.intent.action.MEDIA_MOUNTED -d file://mnt/sdcard
}
Wait () {
while [ $(jobs | grep Running | wc -l) -ne 0 ]; do sleep 1; done
}
for device in $(ADBDevices); do
ADBPushAndScan $device &
done
Wait
一些自动化设置需要将文件加载到 Android 设备上。当 ADB 推送完成时,内部存储器不会自动刷新。
我当前的脚本同时为每个设备依次循环执行 ADB 命令,然后休眠并通过 action.MEDIA_MOUNTED 广播触发内存扫描:
adb devices | while read line
do
if [ ! "$line" = "" ] && [ `echo $line | awk '{print }'` = "device" ]
then
device=`echo $line | awk '{print }'`
echo "$device $@ ..."
#Additional ADB commands
#Load files
adb -s $device push home/test/test-automation-agent/loadondevice/. /sdcard &
fi
done
#Wait for push to complete
sleep 30
adb devices | while read line
do
if [ ! "$line" = "" ] && [ `echo $line | awk '{print }'` = "device" ]
then
device=`echo $line | awk '{print }'`
echo "$device $@ ..."
#Trigger refresh of internal storage
adb -s $device shell am broadcast -a android.intent.action.MEDIA_MOUNTED -d file://mnt/sdcard
fi
done
执行 ADB 推送所需的时间可能会发生巨大变化。我想用检测 ADB 推送完成并执行广播的东西替换睡眠。
感谢任何帮助。
删除 sleep 30
并改为放置 wait
以等待所有 children 退出。
ADBDevices () {
adb devices | awk -F"\t" '/\tdevice$/{print }'
}
ADBPushAndScan () {
adb -s push home/test/test-automation-agent/loadondevice/. /sdcard
adb -s shell am broadcast -a android.intent.action.MEDIA_MOUNTED -d file://mnt/sdcard
}
Wait () {
while [ $(jobs | grep Running | wc -l) -ne 0 ]; do sleep 1; done
}
for device in $(ADBDevices); do
ADBPushAndScan $device &
done
Wait