2011年2月10日木曜日

ODROID-7のAndroidをビルドする

ビルド編の最後を飾りますはAndroidであります。

http://dev.odroid.com/projects/odroid-t/wiki/AndroidPage
ここを見れば全てわかりますし、今回は何も引っかかりはありません。

ですが、Ubuntu 10.04で実際やってみた流れを説明していくことにしましょう。

まず何より先に注意しておきたいことですが、このAndroidをフルにビルドするには結構マシンスペックが必要です。目安としてですが、Intel Core 2 Duo、メモリ2GB以上はあった方がよいと思います。
※特にメモリが少ないと(512MB以下だと)Ubuntuが唸りを上げて操作不能になります。

でははじめに、必要なパッケージをまとめてインストールしましょう。
手順のようにコンソールからコマンドを打っても良いですが、せっかくなのでSynaptic パッケージ・マネージャを使って楽をしましょう。
Ubuntuのメニューバーの「システム」→「システム管理」→「Synaptic パッケージ・マネージャ」を開きます。

パッケージを選択する前にリポジトリの設定変更を行います。
Ubuntu 10.04ではsun-java6-jdkがデフォルトの設定ではインストールできなくなっているためです。
メニューの「設定」→「リポジトリ」をクリックして、「他のソフトウェア」タブを選択し、
「http://archive.canonical.com/ubuntu lucid partner」にチェックをつけましょう。

チェックを付けたら「閉じる」ボタンをクリックして設定を閉じます。パッケージマネージャのウィンドウに戻って「再読込」ボタンをクリックしましょう。
これでパッケージマネージャでsun-java6-jdkが検索できるようになります。(apt-getコマンドでも同じく検索・インストールできるようになります。)

それでは「クイック検索」で下記のパッケージを探して『インストール指定』のチェックをしていきましょう。※依存関係で提案されるパッケージも全て『マーク』していきます。
  • flex
  • bison
  • gperf
  • libsdl1.2-dev
  • (libesd0-dev)※マーク済みになっているはず
  • libwxgtk2.6-dev
  • build-essential
  • (zip)※デフォルトでインストール済みのはず
  • curl
  • valgrind
  • sun-java6-jdk
  • uboot-mkimage
全てチェックを終えたら「適用」ボタンをクリックしてインストールを実行しましょう。
途中「sun-java6-jreのライセンス条項に同意しますか?」と出てくるかもしれませんが「同意」しておきましょう。

続いては環境変数を設定してやりますが、(以降はコンソールでの作業になります)
$ ls -l /usr/lib/jvm/
drwxr-xr-x 4 root root 4096 2011-02-09 23:25 java-6-openjdk
lrwxrwxrwx 1 root root 19 2011-02-09 23:23 java-6-sun -> java-6-sun-1.6.0.22
drwxr-xr-x 8 root root 4096 2011-02-09 23:24 java-6-sun-1.6.0.22
となっていることから「java-6-sun」というのが常に最新のjavaを指していることが推察されます。
ですので、手順のようにバージョンを指定せずとも、「java-6-sun」を指定すれば良いということです。
$ vi ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export ANDROID_JAVA_HOME=$JAVA_HOME
(上記2行を最後尾に追加し、保存して閉じる)
$ source ~/.bashrc

Androidソースコードを入手します。
http://dev.odroid.com/projects/odroid-t/download
こちらで最新リリースをチェックします。
http://dev.odroid.com/projects/odroid-t/download/note/55
現状の最新版はこちらの「Odroid-7 Release(2011-17-Jan)」ですね。「Android source ==>」というリンクからAndroidソースコードを入手可能です。

ひとまず適当な場所で展開しましょう。
$ tar xvzf odroid7-android.tar.gz
(androidというディレクトリに展開されます。)

さてこのAndroidのソースコードですが、いくつかドライバモジュールやライブラリ、バイナリファイルが不足しています。不足しているファイルはOdroid-7実機からADB経由で取ってくる必要があります。
※ADBで接続する手順については以前書きましたこちらを参照。

手順の通りadb pullコマンドで一個一個取ってくるのも良いですが、手間を省くためシェルスクリプトを作ってみました。
#!/bin/bash

ANDROID_HOME=.
DIR_CONFIDENTIAL=$ANDROID_HOME/vendor/confidential
DIR_MODULE=$DIR_CONFIDENTIAL/module
DIR_LIB=$DIR_CONFIDENTIAL/lib
DIR_BIN=$DIR_CONFIDENTIAL/bin

mkdir -p $DIR_MODULE $DIR_LIB $DIR_BIN

# == adb pull modules ==

adb pull /modules/pvrsrvkm.ko $DIR_MODULE
adb pull /modules/s3c_lcd.ko $DIR_MODULE
adb pull /modules/s3c_bc.ko $DIR_MODULE

# == adb pull library files ==

adb pull /system/lib/egl/libEGL_POWERVR_SGX540_120.so $DIR_LIB
adb pull /system/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so $DIR_LIB
adb pull /system/lib/egl/libGLESv2_POWERVR_SGX540_120.so $DIR_LIB
adb pull /system/lib/libsrv_um.so $DIR_LIB
adb pull /system/lib/libsrv_init.so $DIR_LIB
adb pull /system/lib/libIMGegl.so $DIR_LIB
adb pull /system/lib/libpvr2d.so $DIR_LIB
adb pull /system/lib/libPVRScopeServices.so $DIR_LIB
adb pull /system/lib/libglslcompiler.so $DIR_LIB
adb pull /system/lib/libpvrANDROID_WSEGL.so $DIR_LIB
adb pull /system/lib/hw/gralloc.s5pc110.so $DIR_LIB
adb pull /system/lib/hw/copybit.odroid7.so $DIR_LIB
adb pull /system/lib/hw/sensors.odroid7.so $DIR_LIB

# == adb pull binary files ==

adb pull /system/bin/pvrsrvinit $DIR_BIN
adb pull /system/bin/geomagneticd $DIR_BIN
adb pull /system/bin/orientationd $DIR_BIN
adb pull /system/bin/logtool $DIR_BIN

# == Change access permission ==
chmod -R 755 $DIR_CONFIDENTIAL
エディタにぺけっとコピペして保存し、実行権限を付けて、先ほど展開したandroidディレクトリ直下に置きましょう。名前は仮に"adb_pull.sh"としておきます。

Ubuntu PCとOdroid-7を専用USBケーブルで接続した状態(adbでアクセスできる状態)でシェルスクリプトを実行します。
$ cd android
$ ./adb_pull.sh

本家サイトの手順の方では、Odroid-7内のShellでMicroSDカードに格納していくという方法もかかれています。
まあ、あともう一つの方法としては、EclipseのDDMSのファイルエクスプローラを使ってファイル名を見ながらポチポチっとダウンロードしていくというのもあります。(やってることはadb pullと一緒ですね。)
どちらにしても専用ケーブルで繋いでadb経由で作業することに変わりはなく、手間としてはスクリプトでバッチ作業的にやる方が楽かなと思います。

っと、本線にもどりまして。
一応これでビルドのための環境は整いました。後はビルドコマンドを打つだけです。
androidディレクトリにて
$ ./odroid_7_build
...
[[[[[[[ ok success !!! ]]]]]]]
(と表示されれば、ビルド成功です。※1時間ぐらいかかると思います。)
odroid7-imgディレクトリにramdisk-uboot.imgとAndroidのsystemが生成されます。

0 件のコメント:

コメントを投稿