したかったこと
複数emulatorが起動している環境でApp Crawlerを用いようとしたら
Exception in thread “main” androidx.test.tools.crawler.launcher.exceptions.AdbExecutionException: More than one device/emulator found. Use ‘--device-name’ or ‘--device-serial-code’ option to pick a specific device/emulator.
at androidx.test.tools.crawler.launcher.util.AdbExecutor.getDeviceSerialCode(AdbExecutor.java:155)
at androidx.test.tools.crawler.launcher.util.AdbExecutor.<init>(AdbExecutor.java:26)
at androidx.test.tools.crawler.launcher.CrawlLauncher.<init>(CrawlLauncher.java:88)
at androidx.test.tools.crawler.launcher.CrawlLauncher.main(CrawlLauncher.java:93)
とエラーが出てしまった。
何かオプションをつけろとログでは言っている割に、公式ドキュメントにはこのオプションの説明が見当たらなくて、ハマってしまったのでメモ。
解決法
--device-serial-code 動かしたい端末のserialナンバー
をオプションに与える。
- エラーログでは--device-nameオプションか--device-serial-codeオプションを要求されているが、自分の環境(app crawler : Beta1.1 / PC : MacOS Mojave バージョン10.14.4)では--device-nameオプションは正常に動かなかった。
(serial numberを与えても、端末名を与えてもエラーが出た。)
コード例
# 起動しているデバイスを取得
# 1行目はのぞいて[端末名 device]となっているコマンド結果から端末名だけ取り出して配列に入れる
DEVICES=$(adb devices | sed “1d;s/[[:space:]].*$//“)
echo $DEVICES
DATE=date +%y-%m-%d_%H-%M-%S
# 1台ずつapkをインストールしてテストを行う
for device in $DEVICES
do
#app-crawlerのapp-crawlerオプションはちゃんと動かなかったのでインストールは個別に行う
adb -s $device install ./app/build/outputs/apk/debug/hogehoge-debug.apk
# 結果を収納するフォルダを作成して移動
mkdir -p AppCrawler_${device}/${DATE}
cd ./AppCrawler_${device}/${DATE}
java -jar ../../app-crawler/crawl_launcher.jar --android-sdk $ANDROID_HOME --device-serial-code $device --app-package-name com.kkkkan.hogehoge
done
その他・感想
--apk-fileオプションも、実機ならちゃんと動いたけどemulatorだと全然動かなくて先に adb -s installでapkをインストールしてから--app-package-nameオプションで別途app crawlerを起動しなきゃいけなかったし、betaというだけあってまだまだバグだらけっぽい。
参考にしたもの
https://qiita.com/kafumi/items/fff5324a4bb70b7b7986
https://qiita.com/muran001/items/ffd56f8a7dd76e3968fb