tl;dr
Androidアプリの動作確認をするとき、AndroidOSのバージョンやデバイス名、特定のアプリがインストールされているかどうかなどの前提条件を、adbコマンドを使って一括で確認できるようにしたい。
というのも主業務がAndroidアプリのテストなんだけど、他のアプリとの連携を確認する項目が多く、特定の/複数のアプリのインストール確認と(認証が通ってない場合は)認証を通す作業で1時間とかかかることがあるので、一部でもEnterキー一発でわかるようにしたかった。
あと最近こういう小さいスクリプトを書くので自分用のメモ
スクリプト中でやること
今回は以下のことをするサンプルコードを記載する。
- adbを使えるようにパスを通す
- helpオプションを使えるようにする
- 接続しているデバイスのAndroidOSバージョンを確認する
- 接続しているデバイスのデバイス名を確認する
- パッケージのリストを元にそのアプリがインストールされているかどうか確認する
- インストールされていない場合はそれを表示する
今回は含めてないけど電話番号とかSIPのステータスとかが取れるともっと便利な気がする
helpオプションはなくてもいいけど、あるとメンバーに展開しやすいので追加した
サンプルコード
checkPreconditionSample.sh
#!/bin/sh
user_name="wifeofvillon"
# パスを通す
export PATH=$PATH:/Users/${user_name}/Library/Android/sdk/platform-tools
# helpオプション
function usage {
cat <<EOF
$(basename ${0}) is a tool to check preconditions on Android device.
It needs Android Debug Bridge (adb) to work and works with only one device per exec.
Usage:
$(basename ${0}) [-v] [-h]
Options:
--help, -h print this
EOF
}
# インストール状況を確認するパッケージのリスト
APPS=(
"com.google.android.apps.maps"
"com.google.android.music"
"com.google.android.gm"
"com.google.android.talk"
"com.google.android.apps.inbox"
)
# AndroidOSバージョンの確認
function checkAndroidVersion {
echo "start to check AndroidOS version..."
echo "/========================================/"
result=`adb shell getprop ro.build.version.release`
echo $result
echo "/========================================/"
}
# デバイス名の確認
function checkDeviceName {
echo "start to check the device name..."
echo "/========================================/"
result=`adb shell getprop ro.product.model`
echo $result
echo "/========================================/"
}
# アプリのインストール状況の確認
function checkAppVersion {
echo "start to check version of apps..."
echo "/========================================/"
for key in ${!APPS[@]};
do
result=`adb shell dumpsys package ${APPS[$key]} | grep versionName`
if [[ $result = "" ]]; then
echo "${APPS[$key]} >>>> Not installed"
else
echo "${APPS[$key]}"
echo "$result"
fi
done
echo "/========================================/"
}
case ${1} in
help|--help|-h)
usage
;;
*)
checkAndroidVersion
checkDeviceName
checkAppVersion
;;
esac
実行結果
実行環境は
- macOS 10.14.2 / sh-3.2
- ZenFone 4 Android 8.0.0
helpオプション
$ sh checkPreconditionSample.sh -h
checkPreconditionSample.sh is a tool to check preconditions on Android device.
It needs Android Debug Bridge (adb) to work and works with only one device per exec.
Usage:
checkPreconditionSample.sh [-h]
Options:
--help, -h print this
オプションなし
$ sh checkPreconditionSample.sh
start to check AndroidOS version...
/========================================/
8.0.0
/========================================/
start to check the device name...
/========================================/
ASUS_Z01KD
/========================================/
start to check version of apps...
/========================================/
com.google.android.apps.maps
versionName=10.9.2
versionName=9.76.1
com.google.android.music
versionName=8.17.7736-1.K
versionName=8.8.6838-1.B
com.google.android.gm
versionName=9.1.13.232374143.release
versionName=8.3.25.192150130.release
com.google.android.talk
versionName=27.0.215462205
com.google.android.apps.inbox >>>> Not installed
/========================================/