はじめに
Flutterを用いたAndroid Appを開発中に遭遇した表題のテーマについて、備忘録として対応方法を記したいと思います。
背景
実行背景を以下に記します。
- Flutterを用いたAndroid Appを開発中
- テスト配信ではFirebaseを主に使用している
- ただ一部の環境ではそれが使えないので
adbコマンドを経由してビルド成果物(apkファイル)をインストールすることにしている
この背景をもとに、
adb connect インストール先端末のIP(PCと同じwifi SSIDを使用)
このコマンドを用いて接続を試みたが、
failed to connect to '~' : No route to host
このように失敗してしまった。
仮説と検証
そこで以下のように仮説を立てた。
- 接続先とのネットワークが遮断されていないか?
これを検証するために、以下のコマンドをターミナルより実行。
ping インストール先端末のIP(PCと同じwifi SSIDを使用)
結果はこちら。
7 packets transmitted, 7 packets received, 0.0% packet loss
pingは生きており、通信自体はできる状態にある。
ただ、上記メッセージには記載がないが、応答時間にじゃっかん開きがあった。
接続自体はできることは確認されたので、次に以下のように仮説を立てる。
- ADBサーバーのリセット
ADBサーバーとのコネクションに失敗している可能性を鑑みて、
以下のコマンドを実行して初期化を試みる。
adb kill-server
adb start-server
コマンド実行に成功(エラーメッセージの表示なし)したので、
もう一度、以下のコマンドを実行。
adb connect インストール先端末のIP(PCと同じwifi SSIDを使用)
ただ、結果は同じだった。
そこで、以下のように仮説を立てる。
- ポート番号を指定したらどうか
これを検証すべく、以下のようにコマンドを実行。
adb connect インストール先端末のIP(PCと同じwifi SSIDを使用):ポート番号(ex. 5555)
すると、
failed to authenticate to 'インストール先端末のIP(PCと同じwifi SSIDを使用):ポート番号(ex. 5555)'
このように表示結果が変わった。
そこで接続ができているかについて、以下のコマンドで確認。
adb devices
結果は、
List of devices attached
インストール先端末のIP(PCと同じwifi SSIDを使用):ポート番号(ex. 5555) device
このように接続できていることが確認できた。
そこで端末を確認すると、
端末接続の許可のダイアログ(RSAキーのフィンガープリントが記載されているダイアログ)が出ていることが確認されたので、
チェックボックスをタップして許可をした。
最後に、
adb install ビルド成果物の相対パス
このコマンドを実行して、
1 file pushed, 0 skipped. ~
Success
このように表示されていることが確認され、インストールに成功した。