Android Developers Blog: Introducing Android 1.5 NDK, Release 1
Android 1.5 NDK Release 1 が出てた。これでJNIがやりやすくなりますね。
http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
それにしても、ここを長らくほったらかしにしすぎだった。できるだけ毎週末には少しずつ書いていくように頑張ろう。
これは素晴らしい JNI on Android のまとめ情報
JNI絡みで書こうかと思ってたこと以上のことが全て書かれていた。すばらしい。
- Androidのコンパイル環境を整える方法 - Android(アンドロイド)情報-ブリリアントサービス
- AndroidでJNIを使う方法 - Android(アンドロイド)情報-ブリリアントサービス
ライブラリは/system/lib に置くよりは、/data/data/
Tips: JNIのnativeライブラリの置き場所
/system をread-writeモードでremountしてからsoファイルを書き込むということでも可能だが、/system 以下を書き換えるのは抵抗がある、という方は別の場所にライブラリを置けばいい。
/data/data/
ただし、/data/data/
/data/data/
一般のアプリケーションのapkの中にsoファイルを入れたものを提供できるようになった場合*2、この手作業が自動化されるのだろう。
Android Dev Phone 1 の正式な1.1イメージ
http://blogger.splhack.org/2009/03/official-adp1-image.html からの情報で、ADP1の正式な1.1イメージが公開されていることに気づいたので、早速適用してみた。
- http://android-developers.blogspot.com/2009/03/software-update-available-for-android.html (Android Developers Blog)
- http://www.htc.com/www/support/android/adp.html (ここで1.1と1.0のイメージファイルとWindows用とLinux用のfastbootの実行ファイルが公開されている)
適用手順(on Windows)
- Windows用fastboot.exe をダウンロードし、%ANDROID_HOME%\tools にコピーしておく
- 1.1 の radio image と system image を両方ダウンロードする
- 念のため、元に戻すことができるように 1.0のイメージも両方ダウンロードしておく
- ADP1をPCとUSBで接続する(ADP1にはSDカードを挿入しておく)
- もし、デバイスマネージャ上で、接続したADP1が"HTC Dream Composite ADB Interface"として見えていない場合は、ドライバを手動で更新する(http://forum.xda-developers.com/showthread.php?t=463627 を参照)
- USB Mass Storage(USB大容量記憶装置デバイス)の詳細タブを表示する
- プルダウンメニューで Compatible Ids (互換性ID)を選択する
- 下のテキストボックスに表示された内容が以下のものである場合それがADP1なので、ドライバタブを選択してドライバの更新ボタンでドライバ更新を開始する
USB\Class_ff&SubClass_42&Prot_03 USB\Class_ff&SubClass_42 USB\Class_ff
- adb devices で ADP1の接続を確認する
- radio image の(1.1への)アップデート
- radio image のZIPファイルを adb push で ADP1内のSDカード上にupdate.zip というファイル名でコピーする
> adb push ota-radio-1_22_14_11.zip /sdcard/update.zip
-
- ADP1の電源を落としてから、HomeボタンとBackボタンを押しながら起動しなおす
- !のアイコンが表示されたらキーボードを開いて、ALT+L を押してアップデートの途中経過が表示されるようにする
- ALT+Sを押して、SDカード上のupdate.zipをインストールする
- インストール終了後、HomeボタンとBackボタンを押して再起動する
- ここでは必ずHome+Backで再起動することそうしないとradio imageが適用が完了しない
- system image の(1.1への)アップデート
- ADP1をPCとUSBで接続する
- ADP1をFASTBOOTモードで起動する (カメラボタンを押しながら電源ONでの起動)
- 画面上に FASTBOOT と表示されていなければ、Backボタンを押してFASTBOOTと表示される状態にする
- もしダウンロードしたアプリを消してしまいたい場合は、以下のコマンドでuserdata を消去する(通常の場合、この手順は不要)
> fastboot erase userdata
-
- 同じようにcacheも消去することができる(私の場合、こちらは行った)
> fastboot erase cache
-
- システムイメージを書き込む
> fastboot update signed-dream_devphone-img-130444.zip
-
- 書き込み終了後に自動で再起動しない場合は、以下のコマンドなどで再起動する
> fastboot reboot > fastboot reboot-bootloader
-
-
- MENU+SEND+END でも再起動可能
-
HTC Dream(ADP1)向けのソースコード取得・ビルド
基本的なソースコード取得方法
- http://source.android.com/documentation/building-for-dreamに示されている手順に従って、local_manifest.xml をrepo init したディレクトリ(以下、~/mydroid と仮定)直下の.repoディレクトリ(つまり ~/mydroid/.repo)の下に置く
- repo でソースを取得する
- % repo sync
release-1.0 取得方法
- repo init 時に、-b release-1.0 も指定して、~/mydroid を初期化する
- % repo init -u git://android.git.kernel.org/platform/manifest.git -b release-1.0
- 基本と同じく、local_manifest.xml を~/mydroid/.repo 以下に置く
- local_manifest.xml ファイル中の、vendor/htc/dream と hardware/msm7k の revision を cupcake と指定する
<?xml version="1.0" encoding="UTF-8"?> <manifest> <remove-project name="kernel/common"/> <project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-htc-2.6.25"/> <project path="vendor/htc/dream" name="platform/vendor/htc/dream" revision="cupcake"/> <project path="hardware/msm7k" name="platform/hardware/msm7k" revision="cupcake"/> </manifest>
-
- vendor/htc/dream と hardware/msm7k には、release-1.0 のタグやブランチが無いための処置
- repo sync で取得する
最新版のカーネルを新しいもの(2.6.27)にする取得方法
- repo init は通常通りで、~/mydroid を初期化する
- % repo init -u git://android.git.kernel.org/platform/manifest.git
- 基本と同じく、local_manifest.xml を~/mydroid/.repo 以下に置く
- local_manifest.xml ファイル中の、kernel の revision 指定を refs/heads/android-msm-2.6.27 と指定する
<?xml version="1.0" encoding="UTF-8"?> <manifest> <remove-project name="kernel/common"/> <project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-2.6.27"/> <project path="vendor/htc/dream" name="platform/vendor/htc/dream"/> <project path="hardware/msm7k" name="platform/hardware/msm7k"/> </manifest>
-
- 2.6.27 のカーネルにはHTC専用のものが無い(?)
- repo sync で取得する
ビルド(HTC Dream向け)
- VM上のUbuntu環境で、ADP1がUSBデバイスとして正しく認識されるように設定する
- Ubuntu のVMは 8.04 で構築していく手順で説明しているので、http://developer.android.com/guide/developing/device.html に記載のGusy/Hardyでの例に従って、/etc/udev/rules.d/50-android.rules のファイルを作成する
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
- VMのUbuntu環境にPCとUSBで接続したADP1を接続する(VMWare Player の機能を使用する)
- APD1 はUSB Debugging が出来る状態にあらかじめセットしておく
- VM側でADP1を参照できるようにすると、Host OS側からは見えなくなる
- ~/mydroid/vendor/htc/dream 直下の シェルスクリプトを実行し、ADP1からHTCのプロプライエタリなファイル(バイナリ)を取得しておく
- これらのファイルはソースから生成することが出来ない
- ~/mydroid/build/buildspec.mk.default を ~/mydroid/buildspec.mk にコピーする
- ~/mydroid/buildspec.mk のTARGET_PRODUCT をコメントでなくし(先頭の#を取り除き)、generic を htc_dream に書き換える
- ~/mydroid をカレントディレクトリにして、make コマンドを呼び出す
Android ソースツリーの取得
アプリの作り方もとりあえずすっ飛ばします。Windows だけでソースの取得・ビルドする環境を作るなんてやってられないので、VMでLinux(Ubuntu)環境を作ってその上でソースコードを取得します。
Ubuntu VMの導入
- VMware Workstation Player | VMwareからVMWare Playerをダウンロードしてきてインストールする(インストール後再起動が必要です)
- Homepage | Ubuntu Japanese Teamから日本語 Remix VMware用仮想マシン(私は8.04LTSを選択)をダウンロードしてきて展開し、適当な場所に置く
- 日本語 Remixを使うのは、ディスクの空き容量がたっぷりある設定がされているVMのため
- VMを起動し、初回起動時の手順に従ってユーザを作成したり、パッケージをアップデートしたりする
- open-vm-tools が 8.10 ではうまく動作しないようなので、vmware-tools を持っていない人は 8.04 から 8.10 へのアップグレードはしない方が良いです
- メニューのトラブルシューティング→メモリ割り当ての変更で、最低1024MB以上のメモリ割り当てに変更した後、Ubuntuを再起動する
ソースコードの取得
インストール手順レベルの英語くらいは読めないと先々すぐに詰まることになるので、日本語で細かく手順を記載しない。
- 再起動後ログインし、http://source.android.com/の手順に従って必要なソフトをapt-get(もしくはパッケージマネージャ)でインストールしていく
- http://source.android.com/の手順に従ってrepoを取得する
- repo取得後に source コマンドで ~/.profile を読み込みなおしてください。そうしないと、~/bin にパスが通りません
- % source ~/.profile
- repo取得後に source コマンドで ~/.profile を読み込みなおしてください。そうしないと、~/bin にパスが通りません
- 手順に従ってrepoを使ってソースを取ってくる
- 途中でユーザ名、メールアドレスを設定しろと言われるので設定する
ここまでで generic なソースコードの最新版を取得することができる。
Android SDK の準備 (Windows)
Java SDKのダウンロード・インストール
- Oracle Technology Network for Java Developers | Oracle Technology Network | OracleからWindows用JDKをダウンロードしてくる
- JDKのインストーラを起動して、指示に従ってインストールする
Eclipseのダウンロード・インストール
- Enabling Open Innovation & Collaboration | The Eclipse FoundationからWindows用の"Eclipse IDE for Java Developers"をダウンロードする (以降の説明はバージョン3.4 の Ganymede前提で)
- zipファイルなので展開して、適当なディレクトリに置く (以降、eclipse のトップディレクトリは%ECLIPSE_HOME%と記載して説明)
- %ECLIPSE_HOME%\eclipse.exe のショートカットをプログラムメニューやデスクトップに置いて、呼び出しやすくする
- 日本語インタフェースを使いたい場合は日本語プラグインを入れるなどする
EclipseへのADTプラグインの導入
- Eclipse を起動する
- http://developer.android.com/sdk/1.1_r1/installing.htmlのEclipse 3.4(Ganymede)の手順に従いインストールする
- ただし、http://developer.android.com/sdk/1.1_r1/installing.htmlに記載のあるhttpsのURLはアクセスが出来ない場合が多い(ほぼ確実?)ので、アクセスできない場合はhttpのURLを指定する
- Eclipseの再起動を促されるのでYesボタンを押して再起動する
- Window->Preferences で設定ダイアログを出し、その中のAndroidを選択し、Android SDK のトップディレクトリを指定する
- 初回インストール時にGoogleにデータを送るか聞かれるので、好みに応じて設定する
ここまでで最低限アプリケーションを開発する環境は揃う。
ただし、作ったアプリケーションをMarketで公開することまで考えると、署名するための環境構築などがまだ必要。が、とりあえずそれは後回し。