こんにちは。
Android Pieのビルド環境構築手順メモです。
全部ググれば出てきますが、忘備録として。
Ubuntu 18.04でやりました。
本当にただのメモとして書いていましたが、意外とアクセスが多いので大幅に加筆して、コマンドなども少し見やすく編集しました。
2019年1月当時の手順なので、手順が変更されていたらゴメンナサイ。
ビルド環境を構築するための要件の確認
source.android.com
HW要件などが書かれています。
ある程度のスペックがあれば特に問題はないと思います。
とりあえずここに書いてあることをする
source.android.com
OSはMacまたはLinuxでなければなりません。
残念ながらWindowsは現在対応していません。
Android 2.3以降は64bitマシンでないとビルドできません。
最近のバージョンだと特にJDKを入れる必要はありません。
古いバージョンではあらかじめJDKをインストールする必要があります。
以下のコマンドでインストールしてください。
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip
※一番下のコマンドはUbuntu 14.04の場所に記載されていますが、それより新しいUbuntuでもインストールしないとビルドできません。
ソースのダウンロード
以下のページの手順に従います。
source.android.com
repoのインストール
以下のコマンドでrepoをインストールします。
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
ワークディレクトリの作成
作業用ディレクトリを作ります。
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
Gitの設定をしていない場合、以下のコマンドを実行します。
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
manifestをダウンロード
repoで使用するmanifestをダウンロードします。
repo init -u https://android.googlesource.com/platform/manifest -b androidx-master-dev
ブランチの指定は以下のページを見て、特に理由がなければ最新のものを使います。
source.android.com
ダウンロード時、以下のようなエラーが出た場合
fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
fatal: error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)
以下のようにしたら通ります。
PYTHONHTTPSVERIFY=0 repo init -u https://android.googlesource.com/platform/manifest -b androidx-master-dev
SSLのバージョンチェックのバグがあるっぽいです。
コマンドの最初に「PYTHONHTTPSVERIFY=0」を付けることでSSL認証をしないようにできます。
自己責任でやってください。
ソースコードを取得
以下のコマンドでソースコードをダウンロードします。
repo sync -j32
ビルド
以下のページに従ってビルドします。
source.android.com
以下のコマンドを投入します。
source build/envsetup.sh
lunch aosp_x86-eng
make -j32
このとき「lunch aosp_x86_eng」の部分はCUPとbit数によって適宜変更してください。
ビルド時に以下のエラーが出る場合、
FAILED: out/target/product/msm8996/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp
/bin/bash -c "prebuilts/misc/linux-x86/flex/flex-2.5.39 -oout/target/product/msm8996/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp bootable/recovery/edify/lexer.ll"
flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
以下のコマンドを投入して再度ビルドしてください。
export LC_ALL=C
エミュレータの起動
以下のコマンドでエミュレータを起動できます。
emulator
エミュレータ起動時に以下のエラーが出たら
emulator: WARNING: Couldn't find crash service executable /home/user/prj/pie/prebuilts/android-emulator/linux-x86_64/emulator64-crash-service
emulator: WARNING: system partition size adjusted to match image file (2562 MB > 800 MB)
emulator: ERROR: x86 emulation currently requires hardware acceleration!
Please ensure KVM is properly installed and usable.
以下のコマンドを試してみましょう。
emulator -no-accel
私が使っているCPUは仮想化支援機構とやらが入っていません。
なので仮想化環境上(VirtualBox上で動かしているUbuntuでビルドしています。)で、さらに仮想化環境を作ろうとするとエミュレータ起動に失敗するようです。
自分のCPUが仮想化支援機構あるかないかは以下のコマンドで確認できるようです。
cat /proc/cpuinfo | grep vmx
まとめ
これで完了です。
おわり。