LoginSignup
3
3

More than 5 years have passed since last update.

Build & Emulate Android Automotive

Last updated at Posted at 2018-12-19

はじめに

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 の使い方についてはこの記事では言及しません。

選んだAMIはこちら
image.png

インスタンスタイプはこちら
image.png

ストレージは400GBです。
image.png

2. ビルドに必要なアプリを入れる

Establishing a Build Environment | Android Open Source Project

  1. で準備したマシンに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

ビルド中にコマンドが見つかりませんというエラーメッセージが出たので(unzipzipなど)マニュアルのメージには書かれていませんが追加しています。

また、ソースコードをダウンロードするための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

エミュレーターを起動したときの様子が以下通りです。

Screenshot_1544711930.png
Screenshot_1544711981.png
Screenshot_1544712073.png
Screenshot_1544712156.png
Screenshot_1544712191.png

車特有の機能がいくつか表示されているのがわかります。

終わりに

今回は、Android を Automotive向けのコンフィグレーションでビルドしてみました。特有の画面がいくつかあったりと、新しい発見がありました。

今後は、Automotive 特有の機能などについて調査しきたいと思います。,

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3