Tech:android:hack:sdk

出典: Tariki

目次

SDKのインストールと母艦からの駆動

SDKはsoftware development kitの略である。じゃあソフト開発をしなければ要らないのかというと、これがあるといろいろ遊べる。少なくともROM遊び以上のことをするのなら必須だ。あとちょっとUNIXの知識もかじっておくとよい。

SDKで何ができるか

androidはPC母艦のSDKで下記のようないろいろ強力なお遊びができる。

  • adb:
    • shell (端末上のUNIX shell): 別項で書いたように、android OS起動中でなくてもrecovery flash起動中でも使える
    • push/pull (ファイルの転送): SDのFAT領域だけならUSBマスストレージ接続でもよいが、本体フラッシュおよびSDのext2(3)領域への転送には便利 (FAT領域にコピーしたものをadb shellでコピーしてもよいが)
    • remount: /system/、/data/領域は通常、read onlyでマウントされているので、いじる前にはこれでrwマウントすると便利(adb shellから手でリマウントしてもよいが)
    • logcat: dalvikが吐く独り言を観察できる。まあ何に役に立つかというと、新しいROMを最初に起動したときに(5分とか掛かる)不安にならないために眺めるとか(笑)
    • forward: TCPのport forwardingを行なう。USB接続のVPN (azilinkとか) を行なうときに必要です。
      なおazilinkではadbの長ったらしいコマンドはバッチファイルになっているので明示的に『adb forward なんたら』を入力・覚える必要はない。
      ちなみに無線teetherは便利だけど、母艦(ってかteether的には子機?) のOS依存 (ad hoc modeである必要が)。これに対してadb forwardは標準プロトコルを使っているので、母艦でVPNが動きさえすればなんとかなるでしょう (ad hoc modeダメなのにVPN動かないOSってあるか知らんけど)。
  • ddms:
    • 画面のダンプ: 起動直後から使える。アニメーション中でも。

PCのOSはWin、MacOS、Linux (したがってFreeBSDでも動くと思われるが試していない)である。

まあ詳しい使い方はマニュアルとかそれなりのページを読めばよいだろうが、TIPSをいくつか。

adbのTIPS

  • adb shellは複数できます。もちろんその間android本体はふつーに動いていて(本体のターミナルアプリからshellも使えたりしていて)、別のPCシェルからadb push/pullも同時にできたり (UNIXだなぁ)
  • adb shellでexitすると、PC母艦のシェル(Winならコマンドプロンプト)に戻るだけ
    • もう一度adb shellしたときにはシステムの状態(mount状態とか)は以前のままだが、current directoryはログイン直後に戻っているので注意。UNIXのloginと考えれば当たり前ですが混乱する。
  • Winのコマンドプロンプトからadb shellすると、コマンドプロンプト自体のヒストリが利きます。でもコマンドプロンプト自体への指示、adbでのshellへの指示、その他shellから起動したもの(partedとか)への指示など区別なくヒストリ記録されているので要注意。
  • 別項で書いたが、recovery flashのshellはメニューから選択しなくても、起動直後から使えている (RA版のはなし。純正ではどうかわかりません)
  • adb push/pullは複数ファイル、ディレクトリ丸ごと(再帰)が可能。ただし別項で書いたが、ファイルをディレクトリにadb pushするとき、最後の『/』を省略しないこと。ディレクトリファイルが通常ファイルと置き換わって (つまりディレクトリが消滅し転送ファイルが同名のファイルとしてこんにちは) えらい目にあいます。

SDKのインストール

SDKそのものはgoogleから落としてください。けっこーでかい。

ちなみに、開発などせずadbを使うだけであれば、adb単独で動くので(笑)それを含んだキットをダウンロードすればそれで済みます。私はいちばん最初に(台湾旅行中に)VPNを使いたかっただけなので、azilinkキットを落としたらそれに入っていた。あとROM遊びなどにもadbは必須だと思う。

adb単体で動く、というはなしはインストール方法とも関係しています。SDK全体も、ZIPとかで配布されているのをばらしたらそれでおしまい。ふつーインストールでZIPをばらすっていうと、そん中のinstall.exeとかを探してダブルクリック、あとはインストーラがインストールしてくれると思うでしょ。ところがこれは配布キットのディレクトリ構造全体をどこかに置けばおしまい。いかにもMac/Linuxでも互換のツールらしいです (ちなみに開発に使うEclipseもそう)。

ただしこれではコマンドプロンプト(Winの場合)で起動するとき、フルパスで指定するか上記インストールディレクトリに移動しないと起動しないので、マイコンピュータのプロパティ→詳細設定→環境変数に、上記インストールディレクトリ名をフルパスで追加しておきます。

adbを起動しようと思ったら、次に端末用ドライバが必要。これはSDKに含まれていないので、G1/G2/G3/G4 (もういいって)の場合はHTCの電話機付属CD-ROMからインストールします。もしくはHTCのページからダウンロードしてインストールすること。ってしてあるか。adb以前に、HTC syncとか使う必要あるし、USBフラッシュメモリとして接続したときに『不明なデバイス』って怒られるしね。なおUSB接続だけならUSB mass storage classだから(怒られるのを無視すれば)ドライバは必要ないはず(?)。

うまく端末用ドライバがインストールされたら、デバイスマネージャのルートに『Android USB Devices』、USBコントローラの下に『USB複合デバイス』が表示される。インストールがうまくいかないときは、両方とも削除してから『ドライバのインストール』が必要です。