Amazon Fire TV ウェブアプリの開発環境を構築する
はじめに
Fire TVをデバッグするにはAndroid SDKに付属するADBと呼ばれるツールを使ってWifi経由(またはUSB経由)でPCからFire TVへ接続しなければなりません。
この開発環境(というかデバッグ環境)の構築がなかなか厄介だったので実際に構築した手順をまとめました。
対象
フロントエンドしかしない&Androidの開発しない方、とりあえずAmazon Fire TVの開発を始めたい方
環境
- macOS High Sierra
- Google Chrome 69
tl;dr
- Android Studioをインストール
- Platform-Toolsへのパスを通す
- Fire TVの開発者オプションでADBデバッグをオンにする
- Fire TVへWeb App Testerをインストールする
-
adb connect <IP Address>
でFire TVへ接続する
- Chrome DevToolsでデバッグする
ADBをインストール
ADBとは
Android Debug Bridge は adb と省略されます。 これは Android SDK の platform-tools
に含まれるツールです。
このツールを用いると、現在利用可能なデバイス・エミュレータの列挙、シェルコマンドの発行、ファイルの転送などが行えます。
adb connect <IP Address>
でFire TVへ接続するADBとは
Android Debug Bridge は adb と省略されます。 これは Android SDK の
platform-tools
に含まれるツールです。このツールを用いると、現在利用可能なデバイス・エミュレータの列挙、シェルコマンドの発行、ファイルの転送などが行えます。
Android Debug Bridge (adb) とは? - Android 開発入門
Fire TVでは、PCでChrome DevToolsと接続させるために使用します。
Android Studioインストール
ADBを使用するにはAndroid Studioをインストールするのが簡単です。
Android Studioのダウンロードページからインストーラーをダウンロードしてください。
ダウンロードしたらAndroid Studio.appをApplicationsに移動させます。
以上で、Android Studioのインストールは完了です。
Android Studioの起動
Android Studioを起動します。
以下のようなポップアップが出ますが、初期設定の Do not Import settings のままでOKしてください。
セットアップウィザードも初期設定のままで大丈夫です。
Android SDK Platform-Toolsのインストール
ADBはPlatform-Toolsに含まれる機能のため、インストールが必要です。
Android Studioのスタートウィンドウ下部にあるConfigure
からSDK Manager
を開きます。
Android SDK
→SDK Tools
でAndroid SDK Platform-Tools
がインストールされているのを確認します。
もしステータスがNot installed
の場合はチェックを入れ、Applyを押してインストールしてください。
Platform-ToolsにPATHを通す
最後にADBをコマンドとして使えるようにPlatform-ToolsにPATHを通します。
Platform-Toolsは先程のSDK Managerの上部にあるAndroid SDK Location
以下のplatform-tools
フォルダです。
デフォルトでは/Users/{ユーザー名}/Library/Android/sdk/platform-tools
になります。
$ echo 'export PATH=$PATH:/Users/{ユーザー名}/Library/Android/sdk/platform-tools' >> ~/.zshrc
PATHを通したら設定ファイルを再読込してadb
コマンドを実行してみてください。
ADBのヘルプが表示できたら成功です。
Fire TVの設定
Fire TVの開発者オプションを設定
Fire TVで設定
→端末
→開発者オプション
よりADBデバッグを許可します。
(今回はホスティングアプリなので、不明ソースからのアプリへの許可は不要です)
Web App Testerをインストール
Web App Testerはオフィシャルなウェブアプリ開発のプラットフォームです。
Web App TesterをFire TVにインストールします。
(初期状態では「このデバイスのアプリ」は空です)
ADBでFire TVへ接続する
それでは、ADBを使ってFire TVへ接続しましょう。
Web App Testerの右上に出ているIPアドレスへ接続させます。
$ adb connect 192.168.0.13
接続に成功したら connected to 192.168.0.13:5555
と、失敗したら failed to connect to 192.168.0.13:5555
と表示されます。
接続できない場合は トラブルシューティング をご覧ください。
接続状態を確認する
ADBが正しく接続できているかは下記のコマンドで確認できます。
$ adb devices
device
なら接続中、offline
ならオフラインになります。
オフラインのコネクションを再接続させるには以下のコマンドを使用します。
$ adb reconnect offline
Chrome DevToolsでFire TVをデバッグ
Chrome DevToolsでFire TVを表示してみましょう。
chrome://inspect へアクセスし、Remote Targetから先程のFire TVのIPアドレスを探します。
下記の場合はWebView in com.amazon.webapps.performancetester (59.0.3071.125)がFire TVのWeb App Testerになります。
inspect
をクリックしてDevToolsを起動しましょう。
このようにChorme DevToolsが起動します。
画面プレビューが出ない場合は左上のToggle Screencast を押してください。
Hosted Applicationを追加する
最後に、アプリケーションを登録してみましょう。
Web App Testerの「アプリに名前を付ける」、「テストを希望するアプリのURLを入力」の2つの欄を埋めて「デバイスに追加」ボタンを押しましょう。
このとき、Fire TVのリモコンで入力していては埒が明かないので、 Amazon Fire TV Remote App 経由か英数字のみならADBから入力すると簡単です。
ADBの場合はFire TVでフォーカスした後、
$ adb shell input text Test%sApp
で入力できます。(例は"Test App")
入力できたら「デバイスに追加」を押しましょう。
あとは、Test Appを選択し、Chromeからinspectすることでページをデバッグすることができます。
トラブルシューティング
ADBの接続が失敗する
ケース1:他のPCで接続している場合
Fire TVへは1つのデバイスからしかADBで接続できないようです。
片方のコネクションを切断してください。
$ adb disconnect 192.168.0.13
ケース2:Fire TVと異なるWiFiへつながっている
Fire TVとは異なるWiFiへつながっている場合は当然ADBの接続も失敗します。
戒めを込めて。
ケース3:ルータを再起動する
どうしてもつながらない場合は使用しているWifiルータを再起動してみてください。
これで結構改善することがありました。
ADBからの応答がない
$ adb devices
などを実行した際にコマンドが終了しなくなることがありました。
kill-server
も同様のためサーバーを落とせなくなってしまいました。
このようなときはlsof
で5037番ポートでLISTENしているプロセスをkill
してADBを落としてやりましょう。
$ sudo lsof -i | grep 5037
adb 4864 user 8u IPv4 0xbc565019363c87eb 0t0 TCP localhost:5037 (LISTEN)
$ sudo kill 4864
参考
Author And Source
この問題について(Amazon Fire TV ウェブアプリの開発環境を構築する), 我々は、より多くの情報をここで見つけました https://qiita.com/simochee/items/b9267983ae2444d30339著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .