本家ページは以下。手順も書いてある。
http://source.android.com/source/index.html
サポートされている開発環境は、Ubuntu14.04 or Macで、メモリー16GB、ディスク100GB以上(ソース)、ビルドするなら150GB〜200GBいるとか書いてある。
うちには、そんな贅沢なスペックのマシンはありません。でもやる。最近中古で買ったメインマシンのHP Spectre(Ivy Bridge)がメモリー4GB、SSD250GBと、きわどいスペックですが、きっとビルド遅いだけで済むでしょう。Windows10マシンとして使っていたところ、急遽Ubuntu14.04 64bitをインストール。ハードウェアも、ほどよく枯れているので、とくにトラブルもなく快適動作。SkylakeのPCほしー。コスパ的に私が買うのは2年後の中古かなー。
まずは、要るものインストール
JDKから
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk
別のJDKをデフォルトにしている人は以下で、切り替える
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
なんだか、OpenJDK使えとな。Oracleのじゃなくて。ここはとりあえず、従っておく。Googleさんのスタンスとして、このへんどうなんだろう。AndroidStudioだとOracleのリンクが指定されていたり。AOSPは、別扱いなのだろうか。まあ、今はいいや。今度、ちゃんとドキュメントちゃんと読みます。
コンパイルに必要なものをインストール
$ sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip
USBでAndroidデバイスを認識できるようudev設定追加。ハードウェアにデプロイしないのなら要らないと思われ。
ソースをダウンロードするのに、repoというコマンドを使うので、その下ごしらえ$ wget -S -O - http://source.android.com/source/51-android.rules | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
ソースを取得するディレクトリ作成。私はとりあえずaospとしましたが、好きな名前でOKです。
$ mkdir aosp
$ cd aosp
repo初期化
$ repo init -u https://android.googlesource.com/platform/manifest
ブランチ指定したい人は、以下のように指定。ブランチ一覧はここを参考に。
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
$ repo sync
家のネット環境がイモ(Wimax)なせいか、頻繁にエラーで中断される。何度かやり直して、Done。
この時点でソースの総容量が、約13GB、うーん。推奨環境では100GBという話だったが、ちゃんと全部取得できてるんやろか。
とりあえず、ビルドまで通してみる。
$ source build/envsetup.sh
$ lunch aosp_arm-eng
引数のビルドタイプはプロセッサアーキやハードウェアの指定+user, userdebug, engとある。eng(多分エンジニアリングとかの意と思われ)はデバッグ可能な開発者向けビルド的なやつっぽ。タブで補完すれば、指定可能なオプションが確認できる。
現時点で選択可能なのは以下だった。
aosp_angler-userdebug
aosp_arm-eng
aosp_arm64-eng
aosp_bullhead-userdebug
aosp_deb-userdebug
aosp_flo-userdebug
aosp_flounder-userdebug
aosp_fugu-userdebug
aosp_hammerhead-userdebug
aosp_hammerhead_fp-userdebug
aosp_mips-eng
aosp_mips64-eng
aosp_shamu-userdebug
aosp_x86-eng
aosp_x86_64-eng
full_fugu-userdebug
m_e_arm-userdebug
mini_emulator_arm64-userdebug
mini_emulator_mips-userdebug
mini_emulator_x86-userdebug
mini_emulator_x86_64-userdebug
$ make -j4
知ってる人は多いと思いますが、-j4は並列コンパイルのスレッド数を指定。ホストマシンのコア数によって加減する。当然、多くすれば、コンパイルが早いが、マシン性能を超えて指定しても、早くはならない。一般にコア数の2倍程度が良好とされるが(昔の目安)、最近は4コア8スレッドとか、物理コア1つにつき、ハイパースレッディングで仮想コア2つみたいなアーキになってきたりしてるので、そのあたりも踏まえて、自分のマシンで、いろいろ試して、いい感じの並列数を探すのがいいのかもしれない。
で、ビルドが、なんとか終わる、正確に測ってなかったが、 Core i7-3517U 1.90GHz (2Core, 4Thread) のCPUで、-j4オプションで、約4時間くらい。
早速、実行してみる。実機デバイスに焼くというてもありますが、今、デプロイしちゃっていい端末や、開発ボードもないので、エミュレーターで起動させてみる。
$ emulator
なんとも言えない、やっちまった感漂うブートスプラッシュの趣。
うーん。なんだか、しょぼいホーム画面です。Nexus5を愛用してるので、それに近いものが出てくると勝手に予想してましたが、思いの外、オープンソースになってる部分だけでは、しょぼい感じのようです。ビルド指定が、ただのarmだからだろうか。hammerhead(nexus5のコードネーム)というビルドオプションもあるので、次はそれでやってみようかな。
ちょっと、目を疑ったので、ビルド情報確認。
Android6.0で、ビルドナンバーには今日の日付と、私の名前入ってます。どうやら、私がビルドしたものに間違いないようです。
ちなみに、ビルド後の作業ディレクトリの総容量は約41GBでした。ごにょごにょしていくと増えていくんでしょうが、思ったほどでかくなくて、助かりました。最近、ラップトップの内蔵ストレージが、SSDやeMMCになって容量あたりのコスト高いですからねえ。足りなくなりがち。 とりあえず、当初の目標であるソース取得からビルドまでは、無事できましたので、これからイジって行きたいと思います。
今回はこんなところで。
0 件のコメント:
コメントを投稿