2012年4月12日木曜日

Android 4.0のビルド

Android 4.xのビルドの日本語記事
http://androck.jp/%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9/android4-0ice-cream-sandwich%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%83%93%E3%83%AB%E3%83%89%E3%81%BE%E3%81%A8%E3%82%81/

計測環境(その1)
VMWare Player 4で作成したVM
ホスト
CPU: Core i 5 2500 3.30GHz
メモリ: 8GB
HDD: 1TB
OS: Windows 7 Professional 64ビット日本語版
ネットワーク: フレッツ光

VMの設定
Core: 2コア
メモリ: 4GB
HDD: 160GB
OS: Ubuntu 10.04 amd64
ネットワーク: ブリッジ

repo syncの時間
make -j4で計測。
0:06->0:46
real 37m39.432s
user 8m55.350s
sys 6m47.000s

ビルド
$ lunch full-eng
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.0.1
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=ITL41D
============================================
$ make -j4 2>&1 | tee android4_make.log

real 125m14.353s
user 175m52.470s
sys 17m41.450s

このマシンでは、2時間くらいと考えるのがよさそうだ。

---
計測環境(その2)
VMWare Player 4で作成したVM
ホスト
CPU: Phenom 9750 2.40GHz
メモリ: 6GB
HDD: 1TB
OS: Windows 7 Professional 64ビット日本語版
ネットワーク: WiMAX

VMの設定
Core: 2コア
メモリ: 4GB
HDD: 160GB
OS: Ubuntu 10.04 amd64
ネットワーク: NAT

repo syncの時間
make -j4で計測。
一回、中断したので、実際は、以下の値以上。
real 168m16.664s
user 14m53.770s
sys 23m31.490s

ビルド
$ lunch full-eng
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.0.1
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=ITL41D
============================================
$ make -j4 2>&1 | tee android4_make.log

real 174m7.735s
user 304m0.340s
sys 31m37.930s
ただし、以下のエラーが発生。
--------------------------------------------
target Java: ExternalLocPermFLTestApp (out/target/common/obj/APPS/ExternalLocPermFLTestApp_intermediates/classes)
target Java: ExternalLocTestApp (out/target/common/obj/APPS/ExternalLocTestApp_intermediates/classes)
cts/apps/CtsVerifier/src/com/android/cts/verifier/PassFailButtons.java:191: android.app.Activity の onCreateDialog(int,android.os.Bundle) は com.android.cts.verifier.PassFailButtons.PassFailActivity の onCreateDialog(int,android.os.Bundle) を実装できません。スーパークラスでの定義より弱いアクセス特権 (public) を割り当てようとしました。
private static
^
target Java: ExternalLocVersionedTestApp_v1 (out/target/common/obj/APPS/ExternalLocVersionedTestApp_v1_intermediates/classes)
エラー 1 個
make: *** [out/target/common/obj/APPS/CtsVerifier_intermediates/classes-full-debug.jar] エラー 41
make: *** 未完了のジョブを待っています....
------------------------------------------------------
$ sudo update-alternatives --config jar
とやってみると以下のようなメッセージ。Javaの設定らしい。
> リンクグループ jar に 1 つの alternative のみがあります: /usr/lib/jvm/java-6-openjdk/bin/jar
> 設定は行いません。
ということで、jarの設定をやり直す。
real 9m26.653s
user 3m44.350s
sys 5m26.800s
ただし、以下のエラーが発生。まだ、ダメらしい。
------------------------------------------------------
target Java: DataIdleTest (out/target/common/obj/APPS/DataIdleTest_intermediates/classes)
target Java: DownloadProviderPermissionTests (out/target/common/obj/APPS/DownloadProviderPermissionTests_intermediates/classes)
注:一部の入力ファイルは推奨されない API を使用またはオーバーライドしています。
注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。
target Java: DownloadProviderTests (out/target/common/obj/APPS/DownloadProviderTests_intermediates/classes)
cts/apps/CtsVerifier/src/com/android/cts/verifier/PassFailButtons.java:191: android.app.Activity の onCreateDialog(int,android.os.Bundle) は com.android.cts.verifier.PassFailButtons.PassFailActivity の onCreateDialog(int,android.os.Bundle) を実装できません。スーパークラスでの定義より弱いアクセス特権 (public) を割り当てようとしました。
private static
^
target Java: DownloadPublicApiAccessTests (out/target/common/obj/APPS/DownloadPublicApiAccessTests_intermediates/classes)
target Java: DumpRenderTree2 (out/target/common/obj/APPS/DumpRenderTree2_intermediates/classes)
エラー 1 個
make: *** [out/target/common/obj/APPS/CtsVerifier_intermediates/classes-full-debug.jar] エラー 41
make: *** 未完了のジョブを待っています....
注:packages/providers/DownloadProvider/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java は推奨されない API を使用またはオーバーライドしています。
注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。
注:一部の入力ファイルは推奨されない API を使用またはオーバーライドしています。
注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。
注:frameworks/base/tests/DumpRenderTree2/src/com/android/dumprendertree2/TestsListActivity.java の操作は、未チェックまたは安全ではありません。
注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。
------------------------------------------------------
/etc/alternativesにある、バイナリのリンクファイルをすべてJDK6に変更して、再コンパイル。
今度は、コンパイル成功の様子。生成されたバイナリを使って、エミュレータを起動させていないけど。
real 40m31.542s
user 44m5.900s
sys 27m3.740s
結局、このマシンだと、4時間以上は、ビルドにかかるようだ。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。