LoginSignup
0
1

More than 1 year has passed since last update.

接続中の複数のAndroidデバイスに一括でadb installするコマンド

Last updated at Posted at 2022-02-12

経緯

接続中の複数のAndroidデバイスに、同一のapkを一括でインストールしたい際にStack Overflowの以下の記事の

java - How can I adb install an apk to multiple connected devices? - Stack Overflow
https://stackoverflow.com/questions/8610733/how-can-i-adb-install-an-apk-to-multiple-connected-devices
この回答のワンライナーで元気に暮らしていたのですが
https://stackoverflow.com/a/8610829/2227705

Android 11以降で adb pair コマンドで接続したデバイスはSerial Numberが長いせいか(詳細不明)xargsまわりが正常に動作してくれなくなりました。

Wi-Fi 経由でデバイスに接続する(Android 11 以降)
https://developer.android.com/studio/command-line/adb?hl=ja#connect-to-a-device-over-wi-fi-android-11+

修正

そんなわけで、tmpなファイルにいったん出力して、それを読み込むように修正しました。

  • xargsの文字列長制限あたりにひっかかったと思われるためtmpファイルに出力して読み出すように変更
  • offlineやunauthorizedを除外するために、"device"でgrepして有効なデバイスに限定
  • ~/.bash_profile あたりに設定しておき、$ adb-devices$ adb-installs hoge.apk のように使います
  • 妙に長くなってしまってイマイチ感はあります
# adb devicesからserial numberを抽出してmodel名を取得
function adb-devices() {
  adb devices | tail -n +2 | grep "device" | cut -sf 1 > /tmp/serials
  for SERIAL in `cat /tmp/serials`; do
    echo -n "$SERIAL " && adb -s $SERIAL shell getprop ro.product.model
  done
}

# adb devicesからserial numberを抽出してmodel名を取得しつつ引数1のapkをadb install
function adb-installs() {
  adb devices | tail -n +2 | grep "device" | cut -sf 1 > /tmp/serials
  for SERIAL in `cat /tmp/serials`; do
    echo -n "$SERIAL " && adb -s $SERIAL shell getprop ro.product.model && adb -s $SERIAL install -r -d -t $1
  done
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1