1)USBケーブルでMacとAndroid実機をつなぐ。
2)ターミナルから以下のコマンドで、つないだAndroid実機がadbに認識されていることを確認する。
cd ~/Library/Android/sdk/platform-tools/ ./adb devices
adbに認識されていれば、ターミナルに次のように出力され、繋がっている実機の一覧が得られる。例ではエミュレータ1台と実機1台が認識されている。
例)
List of devices attached emulator-5554 device ← エミュレータ 6AB7C17922000026 device ← 実機
ここでちゃんと目的のAndroid実機が認識されていることを確認すること。
注意)上の例のように複数のデバイス(Android実機やエミュレータ)をつなげている場合は、./adb devices -l とすることで、各デバイスの詳細が表示されるので、その情報から目的のAndroid実機を特定すれば良い。
実機が出ない場合は実機側の「設定>システム>開発者向けオプション」の「USBデバッグ」がOffになっている場合が考えられる。Onにしてから再確認するべし。また実機によっては「USB接続時に常に確認」をOffにする必要があったりする。このようにadbとは別の理由でトラブルの原因となる場合がある。
また、上の例で表示されているemulator-5554や6AB7C17922000026はデバイスを特定する時に識別子として使うことになる。
ただし、つながっているデバイスが1つなら識別子でのデバイス指定は不要。
そのため、以後の作業は、つながっているデバイスが目的のAndroid実機1つだけという状態での作業を示す。エミュレータを起動しているなら終了させ、他のAndroid実機はUSBから外しておくこと。
以後の作業は、./adb devicesの結果が
List of devices attached 6AB7C17922000026 device ← 目的のAndroid実機のみ
となっている前提で説明する。
3)ターミナルから以下のコマンドで、目的のAndroid実機にTCP/IP経由でデバッグすることを命令する。TCP/IPポート番号の指定が必須。利用するTCP/IPポート番号のデフォルトは5555なので5555を指定すればいい。
./adb tcpip 5555
もし、複数のデバイスをつないでいる場合、-sとデバイス識別子を使いデバイスを指定する必要がある。
例)./adb -s 6AB7C17922000026 tcpip 5555
注意)adbの使い方は./adb --helpで表示できる。ここにデフォルトのポート番号が5555であることも示されている。ならtcpipの後にポート番号の5555をわざわざ指定しなくても、省略時は5555と解釈でいいように思えるが、ポート番号は必須みたい。
4)Android実機側の設定>端末情報>端末の状態で、Android実機に割り付けられているIPアドレスを調べる。
5)ターミナルから以下のコマンドで、adbにIPアドレス(例:10.0.1.9)で指定されるAndroid実機と連携するように指示する。
./adb connect 10.0.1.9
これで、ケーブルを抜いてもAndroid Studioの実行先として実機が表示される。
もし5555とは違うポート番号を使いたいなら3)からの作業を以下のように変更する。Android実機側のIPアドレスの調べ方は4)を参照。
a-1)ターミナルから以下のコマンドで、Android実機に対しTCP/IP経由でデバッグすることを命令する。
./adb tcpip 4444
注意)同じ3)作業だが、利用するTCP/IPポート番号として5555以外(例:4444)を指定している
a-2)ターミナルから以下のコマンドで、adbにIPアドレス(ポート番号を追加)で指定されるAndroid実機と連携するように指示する。
./adb connect 10.0.1.9:4444
注意)IPアドレスに:4444が追加されている
これで、ケーブルを抜いてもAndroid Studioの実行先として実機が表示される。
追記:検索するとターミナルから以下のコマンドで、USBに繋がっているAndroid実機に対し、adbとの通信に利用するTCP/IPポート番号を5555とは別のポート番号(例:4444)に変更させる必要もありそうなことが書かれているのだが、この点は必須なのかどうかよくわからない。./adb tcpip 4444だけでもいいような…
./adb shell setprop service.adb.tcp.port 4444
もし、複数のデバイスをつないでいる場合、-sとデバイス識別子を使いデバイスを指定する必要がある。
例)./adb -s 6AB7C17922000026 shell setprop service.adb.tcp.port 4444