2015年10月22日木曜日

Android6.0をフルビルドする方法

まだ発売されていないAndroid6.0のOSを使ってみようと思ったので、Android6.0のソースを落としてフルビルドしてみた。
一応今回はエミュレータで立ち上げるまで。実機に焼いてみるのはまた次回(まだ焼ける用実機持ってない)

ほかのサイト、参考書でもビルド手順は書かれてるけど、
「現在有効なコマンド」を知るには、 公式サイトしか参考資料がないので、公式HPは目を通しといたほうがいい
全部英文という鬼畜仕様だけど。。。
すべての基本はこの公式サイトにある。
手順通りにやってうまくいかないときは新しいコマンドに変わってる可能性があるので、要チェック
http://source.android.com/source/index.html
 仮想環境(Ubuntu)の構築
いきなり山場
結局最後まで引っかかってたところが環境のせいだったので、しっかり組んでいく
  1. 仮想環境Ubuntuの設定
  2. VirtualBoxにUbuntuを入れる方法は以前書いた記事参照

    環境構築に必要なハードディスク容量とかは公式サイトをチェック
    今回設定した仮想環境はこんな感じ
    仮想環境の構築項目
    OSUbuntu14.04
    バージョンUbuntu(64-bit)
    メモリサイズ4096MB
    ハードディスク容量150GB (100GBでも足りると思う)
    64bitでないとビルドできないらしい( win8.1で64bit仮想OSが作れないときはここ
    Ubuntuのバージョンによって、ビルドに必要なソフトのインストールコマンドが変わるので注意
    ハードディスク容量を70GBにケチったらビルドがメモリエラーで通らなくなったので、100GB以上必須

  3. 初回起動前にすべき設定
  4. コア数設定
      ビルドには4時間とか平気でかかるから、仮想環境に割り当てるコア数を設定して、処理時間の短縮を図る
      設定→システム→プロセッサのプロセッサ数を上げる
      一応4つにしてある

  5. Tera Termの設定
  6. Tera Termはビルドには必要ないが、あるとコピペが捗どって便利
    設定方法はこちら

 ビルド環境構築
  1. とりあえず「apt-get」を最新にする


  2. JDKを入れる
  3. javaを動かすために必要なやつ。JDKバージョンとビルドするOSの関係は以下の通り
    ・android5.0.0以降:JDK7
    ・android4.x以前:JDK6
    ・android2.3.3以前:JDK5
    バージョン違いはビルドエラーにになるので注意
    今回android6.0.0なのでJDK7をインストール
  4. ビルドに必要なソフトのインストール
  5. Ubuntuのバージョンによってコマンドが変わるので注意
    Ubuntu14.04はこれ
      ※この↓エラーが出たら
      「g++-multilib」をインストールするために必要なソフトがないって言ってるので、単品でインストール
  6. 「pore」コマンドを使えるようにする
  7. 「repo」はフルビルドするソースを取得するコマンド。
    こいつの取得URLが、参考書や、ほかのブログ記事でばらばらになってて、正解にたどり着くのに時間がかかった
    簡単に言うと、ローカルにbinディレクトリを作り、そこに「repo」ファイルを入れる。
    実行権限を与えて、どこからでも呼び出せるようにパスを結ぶ
    2行目がキモ
    「curl」コマンドがインストールされていなければインストール 取得がちゃんとできているのか中を見て確認しとく。
    ※lessコマンドのエディターモードは「q」キーで解除される
    変なエラー(404とか)出ずに、なんかスクリプトっぽいのが出てたらOK
    そうでなければ公式サイトから正式なURLを取得する

  8. ソースの取得
  9. 「repo」ができたのでソースを取得するのだが、その前にgitの設定
    「repo」て結局は「git」らしいから、git初期設定の名前、メールアドレスを入力がいる。適当でいい
    ソース格納用ディレクトリを作り、そこに「repo」コマンドでどのソースを取得するか選択する 最新のコードって今どう変わってるのかわからいので、基本はブランチを指定して取得になる
    ブランチ名は下記URLを参照して、どのソースがほしいのか選んで取得する
    http://source.android.com/source/build-numbers.html#source-code-tags-and-builds

  10. ソースの同期
  11. 取得準備完了したので、そのブランチと同期をとる。実際にソースをローカルに落としてくるのはココ
    この作業はめっちゃ時間がかかる。なので、コア数を指定して、処理速度を上げてく
    この仮想環境のコア数を調べる
    4コアあることがわかる
    よって、4コア使って同期をとれば最速ソース取得ができる!
    0.5時間くらい放置
    ハードディスク容量を20GBくらいにしてたらこの段階でエラーが出て取得できない

 ビルド→エミュレータ起動
ビルド環境ができた!ここから、自分用にソースをいじっていくのだが、とりあえず今はこのままビルドする
  1. おまじない
  2. 下記は仮想環境を立ち上げなおす度に入力しないといけない。
    ビルドコマンド(makeコマンド)を使えるようにしている。
    3行目はビルドの種類を選択してる。基本開発用に作るからこのままでOK
  3. ビルド
  4. いよいよビルド
    エラーが出た場合は、コア数を半分にしてもう一回ビルドするとうまくいくことがある
    長くて4時間くらい?待つとビルドが終わる
    ハードディスク容量を70GBでするとこの辺でエラーになる
    エラー文言が毎回変わってたけど、基本メモリが足りないエラーだった
  5. エミュレータ起動
  6. ビルドが終わったらエミュレータを起動
    今までテラタームで行ってた人はちゃんとGUIのある端末で下記実行。しばらくするとエミュレータが起動する
    ただし、このコマンドもビルドの「おまじない」がないと使えないので注意
    もし、ビルド終わって電源を切る→再起動してエミュレータを立ち上げる際は、おまじないをする必要がある
完成!!

0 件のコメント:

コメントを投稿