はじめに
Android Open Source Project を車載器向けの設定でビルド&エミューレーションしてみたので、それについて書きます。
環境
- AWS EC2 (OS: Ubuntu Server, Type: m5d.xlarge, EBS: 400GB)
- BuildとEmulation用のマシン
- macOS Sierra
- XQuartz を使って、X11 forwarding を行い、EC2 上のEmulator を描画
手順
Android Open Source Project を参考に以下の通り行いました。
1. ビルドマシンを準備
Requirements | Android Open Source Project を参照してマシンを準備します。
手元に条件を満たすマシンがなかったので、AWS EC2 を利用しました。申し訳ありませんが、AWS EC2 の使い方についてはこの記事では言及しません。
2. ビルドに必要なアプリを入れる
Establishing a Build Environment | Android Open Source Project
- で準備したマシンにSSHでアクセスし、必要なツールをインストールします。
# Buildに必要なツール群のインストール
sudo apt-get update && sudo apt-get install -y openjdk-8-jdk python unzip m4 zip make
# ソースコードをダウンロードするためのrepoツールのインストール
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
ビルド中にコマンドが見つかりませんというエラーメッセージが出たので(unzip
やzip
など)マニュアルのメージには書かれていませんが追加しています。
また、ソースコードをダウンロードするためのrepo
というツールを導入しています。
3. AOSP Source をダウンロード
Downloading the Source | Android Open Source Project
上記の記事を参考にソースコードを落としてきます。今回使用したバージョンはandroid-9.0.0_r1
です。
以下のコマンドを実行します。
# 作業ディレクトリを作成
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
# repo の中でgitを使用するので事前に設定
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
# ソースのダウンロード
repo init -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r1
repo sync
いくつかソースコードのバージョンを試しましたが、後述するエミューレーター起動でエラーが起こったりして色々と試した結果、最終的にこのバージョンでemulationまで実行する事ができました。
4. ビルド
Preparing to Build | Android Open Source Project
上記を参考にビルドを行います。実行したコマンドは以下です。
# 環境変数の設定
source build/envsetup.sh
# ビルドのコンフィグレーション
# ここで car がついているのを選ぶことでAutomotive 用のAndroid が作成できます
lunch aosp_car_arm-userdebug
# ビルド
make -j4
5. エミュレーション
Preparing to Build | Android Open Source Project
最後にエミューレーションです。エミュレーションのためにはGUI必要になってきます。遠隔サーバー上のGUIを利用するにはVNCなどの方法がありますが、今回はX11 Forwardingを使用して、GUIを立ち上げました。
参考にした記事を一例として上げておきます。僕はmacOSを使用しているので、XQuartzというX11 サーバーアプリを使用しています。
X11 ForwardingとOSX、Windowsからのリモート接続の話し - そごうソフトウェア研究所
X11 forwarding — 京大マイコンクラブ (KMC)
まず、EC2 にSSH接続する際に、オプションとして -YC
をつけます。-X
でも試してみたのですが、上手く行かなかったため、今回は-Y
を使用しました。-C
については、データの圧縮オプションです。なお、mac側で予めXQuartzを起動しているものとします。
# クライアント側で以下のオプショでSSH接続を行う
ssh -YC -i xxxx.pam ubuntu@xxx.xxx.xxx.xxx
接続が完了したら、ビルドしたディレクトリまで移動してエミュレーターを起動します。
emulator
# デバッグ用のオプションも付けれます。以下は例。
# emulator -help でオプション一覧が見れます
emulator -verbose -no-boot-anim -debug all,-qemud,-mtport,-mtscreen,-sensors_port,-sensors
エミュレーターを起動したときの様子が以下通りです。
車特有の機能がいくつか表示されているのがわかります。
終わりに
今回は、Android を Automotive向けのコンフィグレーションでビルドしてみました。特有の画面がいくつかあったりと、新しい発見がありました。
今後は、Automotive 特有の機能などについて調査しきたいと思います。,