コンピュータカウボーイ見習いのメモ帳

仕事や趣味の備忘録です

【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

これでダウンロードまでの手順は終わりです。実際にビーグルボードで動くかは次回書きたいと思います、