亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

實現android自動化測試部署與運行Shell腳本分享

2020-07-27 19:08:13
字體:
來源:轉載
供稿:網友

我的配置是linux 64, android4.2.2的sdk。 實現的細節都在代碼注釋里了,變量名以及echo的內容也是說明的一部分。

主流程為:

1.檢測是否指定端口的模擬器已經運行,若有則關閉
2.創建模擬器
3.啟動模擬器
4.用ant build包,通過檢查bin目錄下有沒有apk來確定是否成功
5.檢查指定端口的模擬器是否已正常運行
6.用adb安裝apk
7.啟動apk的activity,讓程序自己跑
8.用shell ps循環檢測程序是否已退出,若已退出,檢查是否sdcard是是否已成功生成報告文件
9.若報告文件不完整,即程序被中止/崩潰,重啟activity
10.檢測是否超時

復制代碼 代碼如下:

#!/bin/bash
# by hursing 2013-10-28
# 指定port,可以不干擾其它正在運行的模擬器。根據sdk文檔,port可以在5554至5584之間,最好是偶數
portNumber=5578
emulatorPID=`ps -ef | grep "emulator" | grep "port $portNumber" | awk '{print $2;}'`
if [ -n "$emulatorPID" ]; then
 echo "close emulator window"
 kill -9 $emulatorPID
fi

# 創建模擬器,force選項能覆蓋已存在的模擬器,即sdcard內容也抹掉。echo no是回答不需要自定義硬件配置
echo "create avd"
emulatorName="Test"
echo no | android create avd --name $emulatorName --force --target android-17 --sdcard 300M --abi armeabi-v7a

# 啟動模擬器,port選項指定tcp端口。&是另起進程執行
echo "start avd"
emulator -avd $emulatorName -port $portNumber &

# 沒有證書簽名,所以是debug
echo "build apk"
android update project -p .
ant debug
if [ $? -ne 0 ]; then
 echo "build failed, try again now..."
 ant clean
 ant debug
 if [ $? -ne 0 ]; then
  echo "can NOT build apk!"
  exit 5
 fi
fi
apkFile=`find ./bin/*.apk | grep -v "unaligned"`
if [ -z "$apkFile" ]; then
 echo "no apk file generated!"
 exit 7
fi

# wait-for-device能block住腳本直到不顯示offline
echo "check emulator ready..."
emulatorSerialNumber="emulator-$portNumber"
ready=`adb devices | grep "$emulatorSerialNumber"`
if [ -z "$ready" ]; then
 echo "emulator can NOT launch."
 exit 3
else
 ready=`adb devices | grep "$emulatorSerialNumber.*offline"`
 if [ -n "$ready" ]; then
  echo "wait-for-device"
  adb -s $emulatorSerialNumber wait-for-device
  sleep 10
 fi
fi

# 當adb可以安裝時,模擬器未必已經初始化完成,還是會失敗的,所以要檢測error,試3遍。
echo "install apk"
let maxTryTimes=3
while [ $maxTryTimes -gt 0 ]; do
 result=`adb -s $emulatorSerialNumber install $apkFile`  # 'ant installd' can NOT specify device
 check=`echo "$result" | grep -o "Error"`
 if [ -z "$check" ]; then
  echo "successfully install apk"
  break;
 else
  echo "$result"
  echo "install failed, try again after sleeping 10 seconds"
  sleep 10
  let maxTryTimes-=1
 fi
done
if [ $maxTryTimes -eq 0 ]; then
 echo "can NOT install apk to emulator."
 exit 4
fi

echo "start MainActivity"
activityName="com.hursing.MainActivity"
packageName=`cat AndroidManifest.xml | grep -o "package=/".*/"" | sed 's/package="http://;s/"http://'`
adb -s $emulatorSerialNumber shell am start -W -n "$packageName/$activityName"

heartBeat=10
echo "waiting for test finished.check every $heartBeat seconds."
resultFile="/sdcard/result.txt"
successFlag="End at "
sleep $heartBeat
let maxTimeLimit=60*10
while [ $maxTimeLimit -gt 0 ]; do
 running=`adb -s $emulatorSerialNumber shell ps | grep $packageName`
 if [ -n "$running" ]; then
  let maxTimeLimit-=$heartBeat
  echo "waiting, sleep another $heartBeat seconds..."
  sleep $heartBeat
 else
  report=`adb -s $emulatorSerialNumber shell cat "$resultFile"`
  check=`echo "$report" | grep -o "$successFlag"`
  if [ -z "$check" ]; then
   echo "app crash, run activity again..."
   adb -s $emulatorSerialNumber shell am start -W -n "$packageName/$activityName"
  else
   echo "app exit normally"
   break
  fi
 fi
done

echo "close emulator window."
kill -9 `ps -ef | grep "emulator" | grep "port $portNumber" | awk '{print $2;}'`

if [ $maxTimeLimit -eq 0 ]; then
 echo "Test timeout!"
 echo "$report"
 exit 9
else
 echo "Test Finished!"
 echo
 echo "$report"
fi

java代碼里有一點要注意,如果程序崩潰,彈出了"has stopped”對話框,那么ps還是能查到的,要自己調用

復制代碼 代碼如下:

Thread.setDefaultUncaughtExceptionHandler

,在handler里直接System.exit(0)才行。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日韩欧美视频在线| 久久精品久久久久| 91中文精品字幕在线视频| 久热在线中文字幕色999舞| 午夜精品久久久久久99热| 欧美综合一区第一页| 国产精品狼人色视频一区| 亚洲人成网站777色婷婷| 91成人性视频| 在线精品高清中文字幕| 久热精品视频在线观看一区| 日韩中文在线不卡| 欧美黑人狂野猛交老妇| 国产精品久久久久久久久久新婚| 国产在线视频不卡| 成人网欧美在线视频| 亚洲欧洲黄色网| 精品视频在线导航| 成人精品久久久| 91亚洲精品视频| 久久理论片午夜琪琪电影网| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲精品成人久久电影| 亚洲视频国产视频| 国产精品三级久久久久久电影| 97精品国产aⅴ7777| 国产精品r级在线| 一本一道久久a久久精品逆3p| 亚洲男人天堂网| 岛国av一区二区| 成人黄在线观看| 一本大道久久加勒比香蕉| 国产精品色婷婷视频| 久久福利视频网| 国产免费一区视频观看免费| 日韩在线观看免费全集电视剧网站| 美女av一区二区三区| 欧美日在线观看| 欧美日韩国产成人高清视频| 亚洲性生活视频| 97精品一区二区三区| 亚洲第一页中文字幕| 91精品国产自产91精品| 成人写真福利网| 大量国产精品视频| 精品亚洲男同gayvideo网站| 国产女人18毛片水18精品| 欧美激情第99页| 俺也去精品视频在线观看| 日韩中文字幕在线观看| 日韩成人xxxx| 4p变态网欧美系列| 国产精品久久久一区| 成人亲热视频网站| 国产精品大片wwwwww| 日韩中文在线观看| 亚洲午夜未满十八勿入免费观看全集| 97视频国产在线| 成人国产亚洲精品a区天堂华泰| 91免费看视频.| 欧美成人激情视频免费观看| 亚洲成人xxx| 欧美小视频在线| 亚洲欧美一区二区三区情侣bbw| 亚洲一级黄色片| 91情侣偷在线精品国产| 欧美日韩国产91| 国产精品久久久久久久久借妻| 亚洲男人天堂2023| 欧美高清不卡在线| 国产视频亚洲精品| 亚洲网站在线播放| 亚洲欧美制服中文字幕| 欧美性极品xxxx做受| 亚洲国产婷婷香蕉久久久久久| 久久99久久99精品中文字幕| 韩国v欧美v日本v亚洲| 国产精品毛片a∨一区二区三区|国| 中文字幕亚洲欧美日韩在线不卡| 欧美激情xxxx| 欧美电影在线播放| 国产精品成人久久久久| 欧美日韩国产一区二区| 国内精品视频一区| 亚洲国产精品999| 亚洲美女视频网站| 91九色国产在线| 久久久久久网址| 亚洲人成毛片在线播放| 福利视频第一区| 波霸ol色综合久久| 亚洲成人网av| 97欧美精品一区二区三区| 97久久久久久| 国产精品美乳一区二区免费| 久久久久久999| 国产精品一区二区久久国产| 亚洲在线免费视频| www.日韩.com| 成人免费高清完整版在线观看| 日韩av电影在线免费播放| 亚洲成色777777女色窝| 欧美xxxx18性欧美| www.亚洲免费视频| 青青久久av北条麻妃黑人| 色综合视频一区中文字幕| 精品久久久国产| 91av在线播放视频| 中国china体内裑精亚洲片| 国产一区二区三区免费视频| 国产精品入口夜色视频大尺度| 欧美wwwwww| 国产精品久久久久久av下载红粉| 国产一区二区三区视频在线观看| 国产精品一香蕉国产线看观看| yellow中文字幕久久| www国产亚洲精品久久网站| 777午夜精品福利在线观看| 高清欧美电影在线| 国产精品999| 久久不射热爱视频精品| 欧美插天视频在线播放| 成人黄色在线观看| 5566日本婷婷色中文字幕97| 亚洲免费伊人电影在线观看av| 日韩精品在线视频美女| 久久久免费av| 国产成人在线精品| 国产免费一区二区三区在线能观看| 久久这里有精品视频| 欧美自拍视频在线观看| 亚洲欧美日韩网| 久久91亚洲精品中文字幕奶水| 亚洲自拍偷拍色片视频| 国产精品国模在线| 欧美性猛交视频| 欧美精品少妇videofree| 久久久精品国产一区二区| 欧美中文字幕视频在线观看| 亚洲第一网中文字幕| 国产欧美日韩精品在线观看| 欧美激情a在线| 亚洲自拍欧美另类| 精品国产视频在线| 久久午夜a级毛片| 亚洲成av人乱码色午夜| 久久久999国产精品| 久久久国产视频| 亚洲精品videossex少妇| 亚洲美女喷白浆| 福利一区福利二区微拍刺激| 米奇精品一区二区三区在线观看| 亚洲国产成人久久综合| 日本亚洲精品在线观看| 久久免费成人精品视频| 日韩美女免费线视频| 91美女片黄在线观| 久久精品夜夜夜夜夜久久| 久久久电影免费观看完整版| 国产一区av在线| 91成人国产在线观看| 欧美在线视频网站| 九色精品美女在线| 中文字幕日韩av|