脚本思路:
扫描当前连接电脑的及其device信息, 生成新的运行脚本,新的脚本指令device 信息,
可连续执行需要动作,一次刷机多台机器,无需手动去断开执行。
该脚本顺序执行,需要进一步优化为多线程执行。
1.先将机器全部连接,机器未进入 fastboot 模式时, 执行此脚本会先让所有设备进入 fastboot 模式
2. 所有机器进入 fastboot 模式后,运行脚本会执行对应的刷机
#!/bin/bash
#AutoRebootBootloader
adb devices |tee device_list
sed -i "1d" device_list
sed -i '/^[[:space:]]*$/d' device_list
SCRIPT_FILE=FlashScript.sh
#create running script
if [ -f $SCRIPT_FILE ]; then
rm $SCRIPT_FILE
fi
echo "#!/bin/bash" >> $SCRIPT_FILE
awk -F ' ' '{
if($1!="") {
print "echo Reboot bootloader device: " $1;
print "adb -s " $1 " reboot bootloader"}
}' device_list >> $SCRIPT_FILE
echo "echo \"Reboot End\"" >> $SCRIPT_FILE
echo "sleep 5" >> $SCRIPT_FILE
fastboot devices |tee fastboot_list
sed -i '/^[[:space:]]*$/d' fastboot_list
awk -F ' ' '{
if($1!="") {
print "#**************** " $1 "*************";
print "echo flash device: " $1;
print "fastboot -s " $1 " flash aboot emmc_appsboot.mbn";
print "fastboot -s " $1 " flash boot boot.img";
print "fastboot -s " $1 " flash dtbo dtbo.img";
print "fastboot -s " $1 " flash super super.img";
print "fastboot -s " $1 " flash vbmeta_system vbmeta_system.img";
print "fastboot -s " $1 " flash vbmeta vbmeta.img";
print "fastboot -s " $1 " flash metadata metadata.img";
print "fastboot -s " $1 "flash userdata userdata.img";
print "fastboot -s " $1 " reboot";
print "#**********************************" }
}' fastboot_list >> $SCRIPT_FILE
chmod +x $SCRIPT_FILE
bash $SCRIPT_FILE
优化后的多线程刷机:
默认刷机脚本flash_all.sh, 并没有指定设备,无法实现并刷,通过sed命令,对已插入电脑的设备
指定fastboot 设备名称,重新进行刷机.
#!/bin/bash
FASTBOOT_TOOL=flash_all.sh
rm devlist
rm devlist01
fastboot devices > devlist
awk -F ' ' '{print $1}' devlist > devlist01
sed -i '/^$/d' devlist01
i=1
while read line
do
echo $i
sed "s/fastboot/fastboot -s $line/g" ${FASTBOOT_TOOL} > flash_$i.sh
i=`expr $i + 1`
done < devlist01
while true
do
i=`expr $i - 1`
if [ $i -eq 0 ];then
echo "end"
break;
fi
chmod +x ./flash_$i.sh
./flash_$i.sh &
echo "flash_$i"
done