質問: adb devicesで出力される端末のシリアル番号について質問がございます。 このシリアル番号はAndroid端末が元から保持する値が出力されたものだと思っていたのですが ユーザーガイドに以下の記述を見つけました。 https://developer.android.com/studio/command-line/adb.html > > **<Query for devices>** > > Serial number — A string created by adb to uniquely identify an emulator/device instance by its console port number. > > > > > シリアル番号 - コンソールポート番号でエミュレータ/デバイスインスタンスを一意に識別するために**adbによって作成される文字列**。 > > > そして以下のような記述もあります。 > > **<Send commands to a specific device>** > > you specify the target instance for a command using its adb-assigned serial number. > > > > > **adbで割り当てられたシリアル番号**を使用してコマンドのターゲットインスタンスを指定します。 > > > この説明から adb devicesで出力されるシリアル番号はAndroid端末が元から保持する値ではなく、 adbに初回接続した時に割り振られるものだと思われますが、 **このシリアル番号はどこに保存されているのでしょうか?** また、**シリアル番号を任意の番号に振り直す方法はないでしょうか?** 今回この質問をした経緯として、 Blade V580という機種のシリアル番号が「**0123456789ABCDEF**」という ランダム要素が皆無のシリアル番号になっており、 今後機種を増やした場合にシリアル番号が重複するケースがないか心配になったからです。 以上、よろしくお願い致します。
回答: stackoverflow - Using adb with multiple devices with the same serial number [duplicate] stackoverflowに同じような質問がありました。 回答を見てみると、 まず、端末シリアルナンバーは、端末内の、 /sys/class/android_usb/android0/iSerial に記録されているようです。 ``` adb shell "cat /sys/class/android_usb/android0/iSerial" ``` で、確認できると思います。 ファイルの所有者はrootになっているので、いじらない方がいいでしょう。 次に、シリアルナンバーを使用しない接続方法についてですが、 USBポートを指定する方法と、 Wifi経由で接続してシリアルナンバーをIP+ポートに変える方法があるようです。 どちらも、`adb -s <シリアルナンバーorUSBポート> `のように使用します。 端末がどのUSBポートを使っているかは`adb devices -l`で確認できるみたいです。 多分複数の端末をUSBで接続している場合に、usbポートが確認できると思います。 (私は端末1台しか持っていないので確認できませんでした。) adbはあくまで、 adb上のシリアルナンバーとして利用できる文字列を作成(create)しているだけで、 端末のシリアルナンバー自体を生成(generate)しているわけではなさそうです。 端末を特定するメジャーなものをシリアルナンバーと言っているような感じがしますね。