Firefox OS 開発の色々な面で、ADB
(Android Debug Bridge=Androidデバッグブリッジの略)のインストールが必要となってきます。この記事ではインストール方法を説明し、便利なADBコマンドを共有します。
ADBをインストールする
MacやLinuxやWindows向けのAndroid SDKパッケージの一部として、adbをダウンロード・インストールできます。 Get the Android SDKのページを参照してください。
またはFirefoxアドオンをインストールでき、これが最速の方法です。
新しめのLinuxディストリビューションでは、すでにリポジトリ内にadbがあります。
Ubuntu 12.10以降では下記のコマンドを実行します:
sudo apt-get install android-tools-adb
Fedora 19/20/21は次を:
sudo yum install android-tools
OSXで Homebrew を使っている時はこちら:
brew install android-platform-tools
adbがパッケージされていないディストリビューション
(つまりUbuntu 12.04 やFedora 17/18) では、Android SDK starter packageをインストールする必要があります (SDKツールだけのオプションよりは、ADTとのバンドル(セットになったもの)が欲しくなるでしょう) 。$SDK_HOME/tools/androidにあるパッケージマネージャを実行し、GUI を使用して
"Android SDK Platform-tools" をインストールします。
adb
のインストール場所(通常は /usr/bin で、インストール方法によっては更に $SDK_HOME/platform-tools
の中にもインストールされることもある)を探しておいてください。忘れずにPATH
にこのディレクトリを追加してください。これを行うには、~/.bashrc
やそれに相当するものに対して、次の行を付け加え、
PATH=$SDK_HOME:$PATH
$SDK_HOME
の値にAndroid SDK の場所を設定し直します。
トラブルシューティング
64-bitのOSを使用していて、adbコマンドを使用する時にファイルが存在するにもかかわらず "File not found"(ファイルがありません) というエラーが出る時には、32-bitの互換ライブラリをインストールする必要があります。 aptでは以下のように実行します:
sudo apt-get install ia32-libs
'adb devices'を実行して端末が見つからない場合、ここ をクリックして修正手順に従って下さい。
よくあるADBコマンド
以下のセクションではよくある、便利なadbコマンドを説明します。
b2gプロセスを再起動する
b2gはAndroidベースのカーネルの頂点にあってスマホ上で動作する XULRunner アプリケーションと同等なものです。時にはこれを再起動したくなるかもしれません。これは端末全体を再起動することなしにアプリケーション環境をリセットする方法です。端末とコンピューターを接続した状態(またはデバッガを走らせた状態)で、ターミナル上で下記のように入力することで可能です:
adb shell killall b2g
デバッグ用のポート転送を有効にする
単なるポート転送をするには(例えばアプリマネージャで Firefox OS 端末上のアプリをデバッグしている時)、ターミナル上で下記のように入力します:
adb forward tcp:6000 localfilesystem:/data/local/debugger-socket
電話を再起動したり、抜き差ししたりした時、毎回必ずこれを行う必要があります。必要に応じソケット番号を変更できます。
ローカルマシンへポート転送する
ローカルマシンへポート転送するには、netcat and ssh binariesをダウンロードし、下記コマンドを実行する必要があります:
# this is an awful hack but does in fact work...
host$ adb forward tcp:7979 tcp:6969
# make some named pipes so that we can make a bidirectional netcat
phone$ mknod readback p
host$ mknod readback p
# this sets up a one time use connection to back to the host
# listen on ports 6969 and 5959 and forward all the information between them
phone$ ./netcat -l -p 6969 < readback | ./netcat -l -p 5959 > readback
# connect to port 7979 (port 6969 on the device) and the local ssh server and forward all information between them
host$ ./netcat localhost 7979 < readback | ./netcat localhost 22 > readback
# now when we connect to port 5959 on the phone it will be like connecting to ssh server on the host
# use the netcat reversal to set up an ssh connection back to the host and forward port 9999 on the device to 'localhost:8000' (this could be anything like 'google.com:80')
phone$ ./ssh localhost -p 5959 -L 9999:localhost:8000
これは端末の9999番ポートをホストの8000番ポートに転送します。
別の方法として、sshサーバー(dropbear と host_key)を端末上で直接使う方法があります。それには下記コマンドを使用します:
phone$ DROPBEAR_PASSWORD=root ./dropbear -p 9000 -F -v -a -r host_key ./dropbear
host$ adb forward tcp:8888 tcp:9000
# public key authentication has been hard coded to succeed (make sure you have a public key for ssh to use)
host$ ssh -vvv root@localhost -p 8888 -R 9999:people.mozilla.org:80
詳細な情報:
- dropbearをビルドするマニュアル(英語)
- 環境変数値の不足によるクラッシュを無効にし、認証成功をハードコードするdropbear パッチ