システム3部鈴木です。
今後ソースに変更があった場合に対応できるよう、Androidをソースからコンパイルする方法を説明します。このエントリーではAndroid1.5(cupcake)を対象にしています。
開発環境の用意
Armadilloで動作するバイナリをビルドするには、@テクノが提供しているATDEという開発環境を使用します。
下記のサイトからダウンロードします。VMWareのイメージになっています。
Armadillo-500 FXダウンロード
ただ、このVMイメージはメモリが256MB、HDDが8GBなので、ビルドに時間がかかりますし、ソースを色々とDLすると、ディスクが一杯になってしまいます。
そこで、たとえばVMX Builderというツールを使用して、メモリの割り当てを増やし、ディスクを追加しておくと良いかと思われます。
VMX Builder Download
追加したディスクはext3でフォーマットし、/etc/mtabに追記しておくとマウントの手間が省けます。
セットアップは上記のサイトにある「FX液晶モデル – ソフトウェアマニュアル」というPDFファイルを参照してください。
「3.2. atmark-dist のビルドに必要なパッケージ」という項も確認して、必要なパッケージを最新にしておいてください。
なお、製品同梱のCDに含まれるファイルは上記のサイトのものよりだいぶ古いので、マニュアル中で「CDに入っている」と記載のあるものは上記サイトからDLしたもので代用するのが良いでしょう。
Androidユーザーランドをビルドしてみる
まず、Androidをビルドするために必要なパッケージを用意します。「開発環境の用意」で用意したDebianの環境で、下記のパッケージをインストールします。
# apt-get install flex bison gperf libsdl-dev libesd0-dev \ libwxgtk2.6-dev build-essential zip curl valgrind # apt-get install unzip zlib1g-dev
次に、sun-java5-jdkをインストールするのですが、私の環境ではsoueces.listにnon-freeを追加してもsun-java6-jdkしか見つからなかったので、sunのサイトからダウンロードしました。
なお、sun-java6-jdkだとAndroidのソースのビルド中に警告が出て、続行できません。
Java SE ダウンロード – Previous Release – JDK 5
最新のJDK(現在はJDK 5.0 Update 20)をDLします。
プラットフォームはLinuxで、rpm形式のバイナリをDLしてください。
jdk-1_5_0_20-linux-i586-rpm.binをDLした事として、説明を続けます。
DLしたファイルに下記の操作を行い、jdk-1_5_0_20-linux-i586.rpmファイルを取り出します。
$ chmod +x jdk-1_5_0_20-linux-i586-rpm.bin $ ./jdk-1_5_0_20-linux-i586-rpm.bin
できればDebianのパッケージ管理ツールで管理できるようにしたいので、.deb形式に変換します。
jdk_1.5.0_20-1_i386.debというファイルが出来上がります。
$ alien --scripts jdk-1_5_0_20-linux-i586.rpm
gdebiというツールでローカルのdebファイルをインストールできます。
アンインストールは「Synaptic パッケージマネージャ」など、標準的なツールで行えます。
# gdebi jdk_1.5.0_20-1_i386.deb
次はgit-coreです。既にインストールされているのですが、バージョンが古く、また、普通にapt-getで更新をかけても、1.5.4 以上になってくれません。
リポジトリにbackportsを追加する必要があります。
sources.listにリポジトリを追記して、インストールを行います。
# vi /etc/apt/sources.list deb http://www.backports.org/debian/ etch-backports main deb-src http://www.backports.org/debian/ etch-backports main # apt-get update # apt-get install debian-backports-keyring # apt-get update # apt-get -t etch-backports install git-core
次に、Androidのソースを取得し、ビルドします。
atmarkユーザのホームディレクトリで作業するものとして説明を続けます。
ソースを入手するために、repoというツールを~/binにインストールします。
$ mkdir bin $ PATH=$PATH:/home/atmark/bin $ curl http://android.git.kernel.org/repo >~/bin/repo $ chmod a+x ~/bin/repo
ソースをDLするディレクトリを用意します。名前は自由に付けてください。
$ mkdir mydroid $ cd mydroid
Android1.5(cupcake)のコードリストを取得します。
成功すると、YOUR NAME と Gmailアカウントを要求されます。
実在するGmailアカウントを入力してください。
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
ソースコードを取得します。2GB以上あり、時間がかかるので、気長に待ってください。
$ repo sync
makeの前に、取得したソースに対して、バッテリーの残量を調べるモジュールを修正します。
この作業を行わないと、Androidの起動直後にバッテリーの残量が無いと言われて、起動できません。
下記のサイトで詳しく解説して下さっていますので、「3.3.2 Batteryパッチ」の項に従ってファイルの修正を行ってください。
Android自社端末作成中 – ブリリアントサービス
修正が完了したらmakeします。
$ make
makeが完了したら、Armadilloに転送するためのファイルを作成します。
下記のディレクトリに移動して、中身を確認してください。
$ cd ~/mydroid/out/target/product/generic/ $ ls
rootというディレクトリがAndroidユーザーランドになります。
ただ、root/systemの中が空なので、…/generic/sysytem ディレクトリをコピーします。
$ cp -r ./system ./root/
キーレイアウト、キーマップのファイルのアクセス権を変更します。
これを行わないとボタンが効きません。全部backボタンのような動作をしてしまいます。
(keylayoutのほうは変更する必要が無いかもしれません)
$ chmod 0777 ./root/system/usr/keychars/* ./root/system/usr/keylayout/*
起動スクリプト等を変更します。
「Android1.5を動かしてみる」でDLしたAndroidユーザーランドのtarファイルを展開し、作成されたディレクトリ直下に、起動スクリプトファイルがあるので、root直下にコピーします。
ここでは、展開後のディレクトリを~/androidとします。
$ cp ~/android/init.rc ./root
rootディレクトリをアーカイブして完成です。
(rootディレクトリを適当なところにコピーして、名前を変更したほうがいいかもしれません。cupcake等)
$ tar czf mydroid.tar.gz ./root
後は「Android1.0を動かしてみる」を参考に、
AndroidユーザーランドをArmadilloに展開してください。
wgetではなく、FTPでArmadilloにファイルを転送・展開すると良いと思われます。