2012年7月12日木曜日

OSXでJCROM

ちょっとしたブームになったJCROM、遅ればせながら手元でビルドしてみました。
確認されている開発環境はUbuntuだけですが、手元のiMac(Show Leopard)でそのままビルドします。ビルド自体がそこそこ時間がかかる負荷の大きな作業なのでVMとかで(メモリやCPUに)余計な負担を増やしたくないな、と。



【環境構築】

基本的にAOSP(Android Open Source Project)の Initializing a Build Environment とJCROMのページに従って環境構築します。


1. ディスクユーティリティを使って大文字/小文字を区別するパーティションを作成
  • case-sensitive filesystem が必要です。
  • ディスクユーティリティで Macintosh HD のサイズを小さくして、できた余白に新しいパーティションを「Mac OS 拡張(大文字/小文字を区別、ジャーナリング)」な設定で作ります。名前は「AndroidBuild」にしました。
    • ⇒ /Volumes/AndroidBuild にマウントされます。


2. Xcode 3.x インストール
  • /Developer/SDKs/MacOSX10.5.sdk が必要になります。MacOSX10.6.sdk のコピーやエイリアスではダメでした。。
  • 勝手に Xcode 4.x にアップデートされそうになりますが、すますんに教えてもらったこちらのサイトを参考に Xcode 3.2.6 を入れました。


3. gmake、libsdl、git-core、gnupg をMacPortsからインストール

4. gmakeを 3.81 にダウングレード
  • sources.conf を書き換えるとき、「above the rsync line」。既にある rsync:// より上に file:// を書く必要があります。

5. USBの設定、Android SDKのダウンロード、gitの設定、repoの取得(設定)
  • このあたりは対応済みだったので何もしてません。
  • repoはときどきバージョンアップしているようなので最新版を取得した方がよいです。(前にAOSPのソース取得でハマった記憶が^^;)


【ビルドの準備】
Galaxy Nexus でJCROMを使うのでこのページを参考にします。実際はSC-04Dなのですがdocomoアプリを消しちゃったのと(ぇ)、Global向けで使う extract-files.sh から呼び出されるコマンドがUbuntu用バイナリしかなかったりするので、素の Galaxy Nexus 用ビルドをします。

1. ソースコード取得
  • 当然ながら先に作った /Volumes/AndroidBuild 以下に repo init します。
  • prebuilt の取得にめっちゃ時間がかかります。

2. プロプライエタリなバイナリの用意
  • wget しようとすると証明書が信用できない、と言われるので --no-check-certificate オプションを付けます。またはブラウザでダウンロードしてもよいでしょう。
  • この作業についての詳細はAOSPのここに書いてあります。


【ビルド手順】
以上で準備おしまい。ここまでは最初に1回済ませておけば毎回は必要ない手順です。
以下はビルドするためにターミナルを開き直すたびにする作業(.bashrc とかに書いてもいいんですけど)

0. bash を起動する
  • FreeBSD育ちなので普段 tcsh 使いなんですぅ

1. ファイル数制限を緩和
  • AOSPのページ にも記述がありますが、OSXでは
    ulimit -S -n 2048
    です。2048 もあれば大丈夫そう。

2. キャッシュ設定
  • ここ を参考に
    export USE_CCACHE=1
    export CCACHE_DIR=/Volumes/AndroidBuild/JCROM/.ccache
    ./prebuilt/darwin-x86/ccache/ccache -M 50G
    
    こんな感じ。

3. ビルド
  • JCROMのページ にある通り
    source build/envsetup.sh
    lunch full_maguro-user
    
    してから
    date ; make -j4 ; date
    としました。大した意味はないのですが、ビルド開始時刻(目視してメモっておく)とビルド終了時刻を出力してどのくらい時間がかかるか目安を見ておこうと。1モジュールちょこっと直しただけだと2分半くらいでビルドが終わります。
  • うちのiMacは Core i3 メモリ8GB なので控えめに -j4 にしています。合計コア数が2つしかないので -j4 でも多いかもですが…

4. 実機への書き込み
  • ブロトローダモードで再起動します。
    adb reboot bootloader
    または [Volume Up] + [Volume Down] 押したまま電源キー長押しで起動。
  • 初回はロック解除が必要です。
    fastboot oem unlock
  • 設定やデータをクリアする場合(初回は必須)は
    fastboot -w
    します。
  • ROMイメージの書き込み。
    fastboot -w
    fastboot flash boot out/target/product/maguro/boot.img
    fastboot flash system out/target/product/maguro/system.img
    (実際はこのあたりはシェルスクリプトにしてます)
  • fastboot -w していて、Googleのプロプライエタリなアプリを使いたい場合はこの後で clockwork を使って gapps を書き込みます。(参考。full_maguro-user-….zip は書き込まず、gapps-….zip だけをinstallします)


Lion(10.7)ではビルドできないってウワサもあるのですが確認できていません。メモリ4GBのMBA(Lion)より8GBのiMac(Snow Leopardでビルドした方が速いだろうと期待(^^ゞ
ビルド中はiMacはビルドに注力してもらうとして、作業はMBAでしようかなー。でもMBAは画面が小さい(狭い)んだよなー。てことで、iMacを外部ディスプレイにするべく mini displayport ケーブルを入手しました☆(ゝω・)vキャピ

0 件のコメント:

コメントを投稿