【BeagleBoard】Androidのポーティング【ビルド準備編】
前回はビルドされているAndroidのイメージをBeagleBoardに書きこんでAndroidを起動させることに成功したので今回はポーティングに挑戦してみたいと思います。
作業が多くなると思うので今回はビルドできる環境の構築からソースの取得まで。
参考資料ではFroyoをビルドして使っていますが、かなり古いのでBeagleBoardM3にポーティングできる最新のものを取得したいと思います。
参考資料どおりにGetting the Sorceにアクセスしようと思ったら、ページがなくなっていたので、まず下記のサイトにアクセス
Initializing a Build Environment | Android Developers
ビルド環境の部分を読んでみるとGengerBreadからは64bitでないとビルドできないらしい。俺のPC32bitじゃん\(^o^)/
結局Froyoをビルドすることにしますorz そろそろ変えどきだと思ってたのでPC買い換えたら最新バージョンのビルドに挑戦しよう。
Java
気をとり直してまずはビルドするためにJavaの環境を構築していきます。最新のバージョンの場合はOpenJDKのJava7で良いようなのですが、今回ビルドする「Froyo」はJava 5でなければならないようなのでOracleのサイトからJDKをダウンロードします。
ダウンロードが完了したらファイルをJavaのファイルを展開したい場所に移動して実行します。
私は「/usr/local」にしました。
$ sudo mv jdk-1_5_0_22-linux-i586.bin /usr/local $ cd /usr/local/ $ chmod 777 jdk-1_5_0_22-linux-i586.bin $ sudo ./jdk-1_5_0_22-linux-i586.bin
実行するとライセンス文が表示されるのでスペースキーで飛ばします。
最後にyesを入力します。
展開が完了したら、パスを通します。
$ vim ~/.bashrc
最終行に展開したディレクトリの中のbinのパスを記載します。
PATH=$PATH:/usr/local/jdk1.5.0_22/bin/ #JDK Java5
記載内容を反映させてJavaのバージョンを確認します。
$ source ~/.bashrc $ java -version java version "1.5.0_22" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03) Java HotSpot(TM) Server VM (build 1.5.0_22-b03, mixed mode)
ビルドに必要なパッケージのインストール
まずソフトのインストールに必要な「aptitude」をインストールします。
普段は「apt-get」使っているんですが、参考書は「aptitude」を使ってたので。
$ sudo apt-get install aptitude
参考書でインストールが必要と言っているもので入っていないもののみインストールします。
$ sudo aptitude install git-core flex gperf libsdl-dev libesd0-dev libwxgtk2.6-dev libreadline5-dev uboot-mkimage
実行してみると下記のメッセージが出た^^;
libreadline5-dev のインストール候補のバージョンが見つかりません
Ubuntu – lucid の libreadline5-dev パッケージに関する詳細
ここを参考にインストールします。まずはapt-getのリストにミラーサイトを登録します。
$ sudo vi /etc/apt/sources.list
開いたファイルの最終行に下記のアドレスを追加します。
deb http://mirrors.kernel.org/ubuntu lucid main
再度インストールを試みます
$ sudo apt-get install libreadline5-dev パッケージリストを読み込んでいます... 依存関係ツリーを作成しています... 状態情報を読み取っています... パッケージ libreadline5-dev はデータベースには存在しますが、利用できません。 おそらく、そのパッケージが見つからないか、もう古くなっているか、 あるいは別のソースからのみしか利用できないという状況が考えられます しかし、以下のパッケージで置き換えられています: libreadline-gplv2-dev lib64readline-gplv2-dev E: パッケージ 'libreadline5-dev' にはインストール候補がありません
ということなので「libreadline-gplv2-dev」を変わりにインストールします。
$ sudo aptitude install libreadline-gplv2-dev 以下の新規パッケージがインストールされます: libreadline-gplv2-dev 0 個のパッケージを更新、 1 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 233 k バイトのアーカイブを取得する必要があります。 展開後に 586 k バイトのディスク領域が新たに消費されます。 以下のパッケージには満たされていない依存関係があります: libreadline6-dev : 競合: libreadline-gplv2-dev [5.2-11 がインストール予定となっています] 以下のアクションでこれらの依存関係の問題は解決されます: 以下のパッケージを削除する: 1) libreadline6-dev この解決方法を受け入れますか? [Y/n/q/?]
上位のバージョンだと動かない可能性もありますが、とりあえず削除してインストールします。
repoのインストール
ソースコードの取得に必要なrepoをインストールします。
作業用のディレクトリを作成してパスを通してrepoをダウンロードします。
$ mkdir bin $ export PATH=$PATH:~/bin $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo $ ls -l bin/repo -rwxr-xr-x 1 username workgroup 24081 5月 21 22:29 bin/repo
実行できる権限もつけておきます。
ソースの取得
とりあえずカレントディレクトリに「myFroyo」というディレクトリを作成してソースコードを取得してみます。
$ mkdir myFroyo $ cd myFroyo /myFroyo$ repo init -u git://gitorious.org/rowboot/manifest.git -m TI-Android-FroYo-Devkit-V2.xml gpg: 鍵輪「/home/user/.repoconfig/gnupg/secring.gpg」ができました gpg: 鍵輪「/home/user/.repoconfig/gnupg/pubring.gpg」ができました gpg: /home/user/.repoconfig/gnupg/trustdb.gpg: 信用データベースができました gpg: 鍵920F5C65: 公開鍵“Repo Maintainer <repo@android.kernel.org>”を読み込みました gpg: 鍵692B382C: 公開鍵“Conley Owens <cco3@android.com>”を読み込みました gpg: 処理数の合計: 2 gpg: 読込み: 2 (RSA: 1) Get https://gerrit.googlesource.com/git-repo remote: Counting objects: 117, done remote: Finding sources: 100% (117/117) remote: Total 2866 (delta 1519), reused 2866 (delta 1519) Receiving objects: 100% (2866/2866), 2.40 MiB | 2.09 MiB/s, done. Resolving deltas: 100% (1519/1519), done. From https://gerrit.googlesource.com/git-repo * [new branch] maint -> origin/maint * [new branch] master -> origin/master * [new branch] stable -> origin/stable * [new tag] v1.0 -> v1.0 * [new tag] v1.0.1 -> v1.0.1 ...省略 * [new tag] v1.9.5 -> v1.9.5 * [new tag] v1.9.6 -> v1.9.6 Get git://gitorious.org/rowboot/manifest.git fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedly fatal: cannot obtain manifest git://gitorious.org/rowboot/manifest.git
古い本なのでいやな予感はしましたがリポジトリなくなっているっぽいです。
とりあえず本家からダウンロードしてみます。
こっちの方法ならうまくいきました(・∀・)
【BeagleBoard】Androidのポーティング【BeagleBoard用Androidソースの取得】 - コンピュータカウボーイ見習いのメモ帳
/myFroyo$ repo init -u https://android.googlesource.com/platform/manifest Get https://android.googlesource.com/platform/manifest % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (22) The requested URL returned error: 404 Server does not provide clone.bundle; ignoring. remote: Counting objects: 106, done remote: Finding sources: 100% (106/106) remote: Total 1251 (delta 244), reused 1251 (delta 244) Receiving objects: 100% (1251/1251), 1.05 MiB, done. Resolving deltas: 100% (244/244), done. From https://android.googlesource.com/platform/manifest * [new branch] android-1.6_r1 -> origin/android-1.6_r1 * [new branch] android-1.6_r1.1 -> origin/android-1.6_r1.1 ...省略 * [new tag] android-sdk-adt_r20 -> android-sdk-adt_r20 * [new tag] android-sdk-support_r11 -> android-sdk-support_r11 Your Name [user]: user Your Email [user@user-desktop.(none)]: user@mail.co.jp Your identity is: user <user@mail.co.jp> is this correct [y/N]? y Testing colorized output (for 'repo diff', 'repo status'): black red green yellow blue magenta cyan white bold dim ul reverse Enable color display in this user account (y/N)? y repo has been initialized in /home/user/myFroyo
途中でユーザー名やらメールアドレスが聞かれるのでそのまま答えていきます。 Froyoは2.2なのでそのリポジトリを設定します。
/myFroyo$ repo init -u https://android.googlesource.com/platform/manifest -b android-2.2_r1 Your Name [user]: user Your Email [user@user-desktop.(none)]: user@mail.co.jp Your identity is: user <user@mail.co.jp> is this correct [y/N]? y repo has been initialized in /home/user/myFroyo
早速ダウンロードを開始します。
repo sync
これでダウンロードまでの手順は終わりです。実際にビーグルボードで動くかは次回書きたいと思います、