MacでAndroidStudioからLinuxへアプリをデプロイする方法

※本ページにはプロモーション(広告)が含まれています。
MacでAndroidStudioからLinuxへアプリをデプロイする方法

Mac環境からAndroidStudioで開発していて、Linux実機へADBでアプリを送ろうとしたときに接続や権限で止まってしまって困っている方へ。

この記事を読むと、Mac側の準備からLinux側でのADB起動、ネットワーク経由での接続、そしてAndroidStudioで実機を選んでデプロイするまでを、実際に試した手順に沿って無理なく進められるようになります。

項目内容
実体験手順迷わないように順を追ったコマンドと設定手順を具体的に示します。
トラブル解決集接続できないときや認証で困ったときにすぐ使える対処法を現場目線で紹介します。
便利な応用ワザAndroidStudioで遠隔デバイスを使うときの小技や運用上の注意をまとめます。

手順は一つずつやさしく説明するので、落ち着いて進めれば必ず動くようになります。まずは最初の接続から一緒に進めていきましょう。

Macエンジニア

慌てずに順を追っていけばつながります。気楽に取り組んでくださいね。わからないところは細かくフォローしますので安心してください。

目次

MacでAndroidStudioからLinux実機にADBでアプリをデプロイする方法

MacでAndroidStudioからLinux実機にADBでアプリをデプロイする方法

MacからLinux実機へアプリを送るときは、ADB経由の接続がいちばん手早くて便利です。USB接続が使えないときやケーブルを共有したくないときは、ADB over TCPでワイヤレスに接続すると作業がぐっと楽になります。

  • Linux端末をADBのTCPモードに切り替えて実機のIPを確認する方法。
  • Macのターミナルからadb connectで接続し、AndroidStudioで実機を選んで実行する方法。
Macエンジニア

最初は設定が少しややこしく見えるかもしれませんが、一度つながればケーブル不要で快適にテストできます。落ち着いて順番に進めていきましょう。

ADB over TCPでMacからLinux実機に接続するパターン

ADB over TCPでMacからLinux実機に接続するパターン

ADB over TCPは、端末が同一ネットワーク上にあることと、ポート5555への通信が許可されていることが前提です。ネットワークが分離されている場合や企業ネットワークだとルールで弾かれることがあるので、そのときはローカルWi-Fiやテザリングを使うと手早くつながります。

接続の流れは単純です。まずLinux端末側でADBをTCPモードにし、実機のIPを調べます。次にMacからadb connectしてAndroidStudioの実行ターゲットとして選べば、すぐにデバッグやインストールができます。

Linux端末でadbをTCPモードにして実機のIPを確認する手順(端末での操作)

手順
ADBデーモンを停止してTCPモードで起動

Linux端末上でadbが動いている場合は一度止めます。コマンドでadbをtcpipモードに切り替えてポートを開きます。

手順
実機のIPアドレスを確認

実機側でネットワーク設定からIPv4アドレスを確認するか、端末でipコマンドやifconfigの出力を使ってIPを確認します。

手順
接続状況を確認する

Linux端末でadb devicesを実行して、リスニング状態や接続先が表示されることを確認します。

Macのターミナルでadb connectしてAndroidStudioの実行ターゲットを選ぶ手順(ターミナルとIDEの操作)

手順
Macでadb connectを実行

Macのターミナルからadb connect 実機のIP:5555を実行して接続します。成功するとconnectedと表示されますので、その行を確認してください。

手順
AndroidStudioで実機を選択して実行

AndroidStudioを開き、実行ターゲットの一覧に先ほど接続したIPの端末が出るので選んでアプリを実行します。接続が見つからない場合はadb devicesで接続状況を再確認してください。

MacでAndroidStudioからLinux仮想マシンやリモートホストのエミュレータへデプロイする方法

MacでAndroidStudioからLinux仮想マシンやリモートホストのエミュレータへデプロイする方法

MacからAndroidStudioで作ったアプリをLinux上の仮想マシンやリモートホスト上のエミュレータへ送る方法は、大きく二つの流れがあります。ひとつは仮想マシンをブリッジ接続して同一ネットワーク上の端末として扱う方法。もうひとつはリモートのLinuxでヘッドレスなエミュレータを起動してadbで接続する方法です。

手元のMacで行う作業はadbでデバイスに接続することとAndroidStudio側でそのデバイスを選ぶことだけなので、設定さえ整えば普段どおりビルドして実機に入れられます。この記事では具体的な設定とつまずきやすいポイントを、やさしく順を追って説明します。

Macエンジニア

初めてのネットワーク越しデプロイは緊張するけれど、手順を追えばちゃんとつながるので気楽にやってみてください。段取りを覚えればすごく便利になりますよ。

VMをブリッジ接続してMacから直接デプロイするパターン

VMをブリッジ接続してMacから直接デプロイするパターン

仮想マシンをブリッジ接続にすると、VMはMacと同じLAN内の普通のホストになります。そのためVMがDHCPで取得したIPに対してadb connectで接続すれば、AndroidStudioからそのデバイスを選べます。

注意点はネットワーク分離やファイアウォールです。VM側とMac側が同一サブネットにあるか、仮想ネットワークがブロックされていないか確認しておくとスムーズです。

VMのネットワークがNATのままだとMacから直接adb connectできないので、必ずブリッジに切り替えてIPを確認してください。

仮想マシンでネットワークをブリッジにしてIPを確認しadbで接続する手順(VM設定と端末操作)

手順
VMのネットワークをブリッジに切り替える

使っている仮想化ツールでネットワークをブリッジに設定してからVMを再起動してください。

手順
VM内でIPを確認する

Linux上でip addr showやifconfigで割り当てられたIPを確認してください。

手順
Macからadbで接続する

Macのターミナルでadb connect VM_IP:5555を実行し、adb devicesで表示されればAndroidStudioで選べます。

リモートLinuxホストでヘッドレスエミュレータを使うパターン

リモートLinuxホストでヘッドレスエミュレータを使うパターン

リモートLinuxホストでヘッドレスのエミュレータを動かすと、Macはネットワーク越しにそのエミュレータに接続してデプロイできます。ヘッドレスは画面なしで起動するのでサーバ環境でも使いやすく、CIや共有環境で重宝します。

起動方法はコマンドから-no-windowでエミュレータを立ち上げ、必要ならそのホストでadbをtcpipモードにしてからMac側でadb connectするだけです。ネットワークの遅延に注意すると安定して動きます。

ヘッドレスエミュレータはGPU周りやイメージによって起動時間が変わるので、起動完了をadb devicesで確認してから接続してください。

Linuxホストでヘッドレスエミュレータを起動してMacからadb connectする手順(起動コマンドと接続方法)

手順
Linuxホストでヘッドレスエミュレータを起動する

sshでログインしemulator -avd AVD_NAME -no-window -no-audio -gpu swiftshader_indirect &を実行してエミュレータをバックグラウンド起動してください。

手順
ホスト上でadbをtcpipモードにする

ホストのターミナルでadb devicesでemulator名を確認してからadb -s emulator-5554 tcpip 5555を実行してTCP接続を有効化してください。

手順
Macからadb connectする

Macのターミナルでadb connect HOST_IP:5555を実行しadb devicesで表示が出れば、AndroidStudioからデバイスを選んでデプロイできます。

MacでAndroidStudioからLinux上のDockerやCIでビルドとテストを自動化する応用

MacでAndroidStudioからLinux上のDockerやCIでビルドとテストを自動化する応用

Mac上のAndroidStudioからビルドやテストをLinux上のDockerやCIに移すと、手元の作業を止めずに大きなビルドや自動化処理を回せます。遠隔でビルドしたapkやテストログをMacに戻す流れを作ると開発がずっと楽になります。

ここでは現場でよく使うパターンを紹介します。DockerコンテナでGradleを動かす方法や、リモートでヘッドレスエミュレータを起動してUIテストを走らせる方法など、実際に使いやすい手順を中心にまとめます。

  • DockerコンテナでGradle実行してapkを生成する
  • リモートでヘッドレスエミュレータを起動してUIテストを実行する
  • CIで成果物とログを収集してMacに回収する
Macエンジニア

遠隔でビルドやテストを回すと手元は軽くなり精神的にも楽になります。設定は少し手間ですが、一度整えば作業効率がぐっと上がるので安心してください。

DockerコンテナでGradleビルドしてapkを取り出すパターン

DockerコンテナでGradleビルドしてapkを取り出すパターン

DockerコンテナでGradleを回してapkだけ取り出すのは手堅い方法です。AndroidSDKとJDKを備えたベースイメージを用意すると環境差によるトラブルが減ります。

プロジェクトをマウントして./gradlewを実行し、生成物をコンテナ内の所定フォルダに出力します。依存キャッシュやビルドキャッシュをうまく使うとCIの速度が改善します。

LinuxのDockerでプロジェクトをマウントして./gradlewを実行する具体手順(docker runの構成)

手順
コンテナ起動とプロジェクトマウント

ローカルのプロジェクトフォルダをコンテナにマウントして作業ディレクトリを合わせます。ボリュームを使うとGradle依存のキャッシュが効きます。

手順
環境変数と権限調整

JavaやAndroidSDKのパスを環境変数で渡し、ユーザIDを合わせるとファイル権限の問題が減ります。必要ならGradleのキャッシュディレクトリも調整します。

手順
Gradle実行と成果物保存

コンテナ内でGradleを実行してapkを所定フォルダに出力します。ログは標準出力とビルドログに残るので確認しやすくなります。

ビルド成果物をscpやdocker cpでMacに回収する手順(成果物の保存場所と取り出し方法)

手順
ビルド成果物の保存場所

通常はapp/build/outputs/apk以下にapkが生成されます。ビルドタイプごとのパスをあらかじめ確認しておきます。

手順
docker cpで取り出す

コンテナからMacへはdocker cpでコンテナ内の出力パスを直接コピーするのが簡単です。CIホスト上の一時ディレクトリを経由させる運用も安全です。

手順
scpでリモートから回収

Linuxホストでビルドしている場合はscpでMacへ転送します。公開鍵認証を設定すると自動化パイプラインでの回収がスムーズになります。

リモートLinuxで自動UIテストを実行して結果を取得するパターン

リモートLinuxで自動UIテストを実行して結果を取得するパターン

リモートLinuxで自動UIテストを動かす場合は、ヘッドレスエミュレータか実機のどちらかを選べます。ヘッドレスは画面表示なしで起動できるためCI向けで、実機は実ユーザ環境に近い確認ができます。

テストはGradleのconnectedAndroidTestやadb経由のInstrumentationで実行します。テストレポートはプロジェクトのbuild配下に出力されるため、CIでアーティファクト化してMacへ持ってくると解析が楽になります。

CIでヘッドレスエミュレータを起動しadb経由でテストを実行してログを保存する手順(ログの場所と取得方法)

手順
ヘッドレスエミュレータ起動

エミュレータを画面表示なしで起動してadbで接続待ちにします。起動完了はadb shell getprop sys.boot_completedで確認します。

手順
テスト実行

apkをadb経由でインストールしてからInstrumentationやGradleのconnectedAndroidTestを実行します。標準出力にテスト進行が出るのでCIログとして残します。

手順
ログと結果の取得

adb logcatやadb pullでログやreportディレクトリを回収します。CIではレポートとログをアーティファクト化して保存すると後から解析がしやすくなります。

よくある質問

よくある質問
AndroidStudioに接続したLinux実機が表示されない

まず実機側で開発者向けオプションとUSBデバッグが有効になっているか確認してください。Macでターミナルを開きadb devicesと入力してデバイス一覧を確認します。見えない場合はadb kill-server;adb start-serverを試し、ケーブルやポートの物理接続を確認してください。

adb connectで接続できない、接続拒否と言われる

Linux実機のadbdがTCPで待ち受けているか確認してください(adb tcpip 5555を実行)。同じネットワークにいるか、実機のファイアウォールでポート5555がブロックされていないかも確認します。必要ならpingで疎通を確かめると原因を絞れます。

認証ダイアログが出ない、接続を承認できない

通常は最初にUSB接続してから承認ダイアログが出ます。出ない場合はMac側の~/.android/adbkeyを削除して再接続すると承認を促せます。それでもダメなら実機のadbdを再起動してみてください。

AndroidStudioでデバイスがofflineになる、度々切断される

Wi-Fi接続だと電波や省電力設定で切れやすくなります。可能なら一時的にUSBで接続して安定性を確認してください。またMac側と実機双方のplatform-toolsのバージョン差が影響することがあるのでSDKマネージャーでplatform-toolsを最新にしてください。

adbコマンドが見つからない、別バージョンが使われている

which adbで使われているadbのパスを確認してください。HomebrewでインストールしたadbとAndroidSDKのadbが混在すると問題になります。AndroidStudio内のSDKパスを優先するか環境変数PATHを調整してください。

ネットワーク越しでどうしても接続できない場合の裏ワザはある

NATやファイアウォールが原因ならSSHのポートフォワードでトンネルを作ると安定することがあります。具体的には実機側からMacへsshで5555番を転送してからadb connect localhost:5555で接続する方法が有効です。安全のため接続後は不要なポート転送を解除してください。

まとめ

まとめ

今回のまとめとしては、Mac上のAndroidStudioからLinux実機へアプリを送る流れは意外とシンプルです。まずは実機でデベロッパーモードを有効にしてADBをTCP/IPで使えるようにします。次にMac側でadb connectで接続し、AndroidStudioのデバイス一覧に出ればあとは通常どおりビルドして実行できます。

つまずきやすいのはネットワークの疎通と認証鍵の許可です。macOSのファイアウォールやルーター設定、実機のADB許可ダイアログを見落とさないでください。USBで最初に接続して鍵交換しておくと安定して使えます。

トラブル時はターミナルでadb devicesやadb logcatを使って原因を確認するのが近道です。小さなチェックリストを作っておくと毎回のデプロイが速くなります。気楽に試していきましょう。

Macエンジニア

最初は緊張するかもしれませんが落ち着いて順に確認すれば大丈夫です。意外と小さな設定が原因のことが多いので焦らず進めてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次