Android渠道包自動化驗證

jopen 9年前發布 | 23K 次閱讀 Android Android開發 移動開發

        前言:android應用每當發布一個版本時,往往需要打許多的渠道包,用于不同渠道的運營推廣,傳統的渠道包驗證往往是安裝某個apk包,然后打開eclipse,運行應用,查看其中的運行日志,看發送的請求中是否帶有該渠道信息。

        如此這般,若有上百個渠道包,是沒可能每個包都去驗證的,且若后期新增的渠道,亦還需抽空去驗證下apk渠道包,雖然并不是很耗時間,但常常被這樣的事打斷日常工作還是會讓人煩惱的,而自動化驗證渠道包就顯得方便很多。

思路:點擊android應用,然后查看日志,這樣的過程完全可以利用robotium實現,編寫用例實現點擊操作,通過solo.waitForLogMessage()方法可以判斷應用運行過程中是否出現了相應日志。

解決方案:

1.用ant打包過程中,命令apk包名時,使包名中帶有渠道號

2.想辦法將包名中的渠道號取出,并傳遞至android模擬器或android手機

3.robotium測試工程完成讀取當前apk包的渠道號,并完成渠道號驗證

4.與jenkins集成,完成自動化構建、上傳至FTP、發送郵件等


具體步驟:

1.編寫robotium測試用例,讀取SD卡中帶有渠道號的文件

2.Jenkins中執行以下shell命令

(

#進入測試工程目錄
cd test_Robotium


定義相關變量,其中某些變量為在jenkins中的參數化

APKPATH="$SRC_COID_APKPATH"
ROBOAPKPATH="/usr/jenkins/jobs/Test/robotiumapk/RobotiumTest.apk"
CHANNELFILE="channel.txt"
APKFILE="apkfile.txt"
PREFIX="*
"
SUFFIX=".*"

卸載測試工程包

adb uninstall com.company.package.test

安裝測試工程包

adb install $ROBOAPKPATH

清空文件

: > $CHANNELFILE
: > $APKFILE

for循環,取目錄中的所有apk安裝包

for FILEPATH in $APKPATH/*;do
echo $FILEPATH
echo $FILEPATH >> $APKFILE
apkname=$FILEPATH

echo $apkname


卸載、安裝單個的android應用安裝包

adb uninstall com.company.package
adb install "$apkname"

獲取路徑下的apk包名、并截取渠道號

coidnameapk=${apkname##$PREFIX}

echo $coidnameapk

coidname=${coidnameapk%$SUFFIX}
echo $coidname
: > $CHANNELFILE

將渠道號保存到文件

echo $coidname >> $CHANNELFILE

將帶有渠道號內容的文件傳至android模擬器或手機

adb push $CHANNELFILE /mnt/sdcard

運行測試用例,自動驗證渠道號

adb -s emulator-5554 shell am instrument -w -e class com.company.package.test.ChannelTest#test01_coidTest com.company.package.test/android.test.InstrumentationTestRunner

copy原apk包,并刪除原來apk包

cp "$apkname" $TEMP_COID_APK_PATH
rm -rf "$apkname"

循環結束

done

將所有驗證過的apk包壓縮打包,用于自動上傳至FTP

cd $TEMP_COID_APK_PATH
zip $BUILD_ID.zip $TEMP_COID_APK_PATH/.apk
mv $TEMP_COID_APK_PATH/
.apk $DEST_COID_APK_PATH
)</span>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!