Android 開発しているときに、ワイヤレスデバッグで何度か再接続を繰り返したりしていると、 adb devices で表示されるデバイスの様子がおかしくなるときがあります。

こうなってしまったら、 expo で開発しているときに使うコマンド、 expo run:android コマンドでは、デバイスに接続できないと言われ、デバッグが出来なくなります。
$ expo run:android CommandError: Failed to get properties for device (DeviceName): Command failed: adb -s DeviceName shell getprop ro.product.cpu.abilist adb: device 'DeviceName' not found
こういうときは、次のようなパッチを当てることで接続可能になります。
diff --git a/build/src/start/platforms/android/adb.js b/build/src/start/platforms/android/adb.js index a8dafb4fedf286fd3aba8f764d3c2ba8566db292..0e8568ed8781a48b943e74546014bd63244b2aca 100644 --- a/build/src/start/platforms/android/adb.js +++ b/build/src/start/platforms/android/adb.js @@ -209,9 +209,9 @@ async function installAsync(device, { filePath }) { } function adbArgs(pid, ...options) { const args = []; - if (pid) { - args.push('-s', pid); - } + // if (pid) { + // args.push('-s', pid); + // } return args.concat(options); } async function getAttachedDevicesAsync() {
pnpm コマンドを使っている場合は、 pnpm patch @expo/cli でパッチを当てる準備をし、 build/src/start/platform/android/adb.js の210行目付近を探し、該当関数にパッチを当てることで動作するようになります。参考元 Issue は悲しいことに bot に閉じられてしまっていますが、追記してくださっているパッチは現在の expo@55.0.4 現在でも利用可能なので、こうなってしまったらこのパッチを当てて作業をしましょう。もしくは USB デバッグを使いましょう。
ちなみにこのブログを見た Android 開発者の方でこれの治し方を知っている方がいましたらコメントで教えてください。 adb shell すら出来ずに切実に困っています。
参考:
- adb tries to get property data from the wrong Android device PID · Issue #33252 · expo/expo · GitHub
追記:
- Android 端末側を再起動したら治りました......