はじめに
Android Automotive OSをラズパイに組み込むまでの手順をまとめる。下記GitHubの手順に従い実施した。手持ちのパソコンの性能が良くなかったのでビルドに時間はかかったが、大きな問題なく試すことができた。
目次
Android Automotive OSとは
Andoroid Automotive OSは車載機器用のAndoroid OS。似たようなものにAndroid Autoがあるが、違いをイメージ図にまとめてみた。Android Autoはスマホ側の機能を車載機器に表示するので、頭脳はスマホ側にある。AppleのCarPlayもAndoroid Autoと同様の仕組みで実現している。対してAndoroid Automotiveは車載機器自体をAndroid化したもの。
試した環境
Android Automotive OSをビルドしたパソコン環境と組み込むラズパイは下記の通り。
PC(ビルド環境)
Android automotive OSのビルド環境。この環境で、ソースコードのダウンロードで1時間、ビルドで12時間位かかる。推奨メモリは64GBだが、メモリSWAPで乗りきれた。
OS | Ubuntu 22.04.5 LTS |
---|---|
CPU | AMD Ryzen 7 3750h (4コア 8スレッド) |
メモリ | 32GB |
SSD | 512GB |
SWAPメモリサイズの変更は下記の通り。
# 16GBにする場合。
$ sudo dd if=/dev/zero of=/swaparea bs=1M count=16384
$ sudo chmod 600 /swaparea
$ sudo mkswap /swaparea
$ sudo swapon /swaparea
Raspberry pi(組み込み環境)
Andoroid Automotiveを動作確認するためのラズパイの環境。手持ちにタッチパネルディスプレイがなかったので、HDMIのパソコンディスプレイとマウスで代用。
- Raspberry pi 4 4GB
- microSD 32GB
- ディスプレイとマウス
ビルド手順
1~4のステップでビルド完了する。ビルドに必要なソフトやAndroidのOSバージョン(記事 android-15.0.0_r6
)の最新情報は下記サイトを参照。
併せてKernelもビルドしたい場合は5を実施してから4を実施(1→2→3→5→4)。但し必須ではない。
1.GitとRepoの準備
Android Automotive OS の環境を取得するためにGitとRepoが必要なので準備する。既にGit,Repoを設定している場合はこの手順をスキップ。
Git インストール
gitはソースコードをバージョン管理するツール。
$ sudo apt install git
$ git --version
# git version 2.XX.X
初期設定
$ git config --list
# ユーザー名設定
$ git config --global user.name "yourname"
# メールアドレス設定
$ git config --global user.email your_address@xxx.com
設定確認
$ git config --list
# user.name=yourname
# user.email=your_address@xxx.com
Repo インストール
Repoは大量のGitリポジトリを一括管理するためのツール。Googleが開発したツール。
#移動
$ cd ~/
#binディレクトリ作成
$ mkdir ~/bin
# Pathを通す
$ PATH=~/bin:$PATH
#~/bin/repoに格納
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
#実行権限付与
$ chmod a+x ~/bin/repo
2.ビルドに必要なソフト取得
必要なソフトをapt-get install
とPython3 pip
で取得。
$ sudo apt-get install bc coreutils dosfstools e2fsprogs fdisk kpartx mtools ninja-build pkg-config python3-pip
$ sudo pip3 install meson mako jinja2 ply pyyaml dataclasses
3.Repoでビルド環境取得
ソフトを取得・ビルドするディレクトを作成し、Repoで取得する。例では~/aaos
としている。ディレクトリ名は、何でもよい。repo sync
で取得するが、100GB程度あるので注意。約1時間ぐらいかかった。
# フォルダ作成
$ mkdir ~/aaos
$ cd ~/aaos
# Repo初期化
$ repo init -u https://android.googlesource.com/platform/manifest -b android-15.0.0_r6
$ curl -o .repo/local_manifests/manifest_brcm_rpi.xml -L https://raw.githubusercontent.com/raspberry-vanilla/android_local_manifest/android-15.0/manifest_brcm_rpi.xml --create-dirs
# 取得
$ repo sync
4.ビルド
ここからビルド。下記3コマンドで開始される。私の環境では12時間程度かかってしまった。Andoridをビルドするためには、やはりそれなりのPC環境が必要。。
$ . build/envsetup.sh
$ lunch aosp_rpi4_car-ap4a-userdebug
$ make bootimage systemimage vendorimage
完了すると下記となる。
#### build completed successfully (XX:XX:XX (hh:mm:ss)) ####
私の環境では途中ビルドが止まる難所があった。
難所①
メモリが足りなくて、ビルドが落ちた。おそらくここで一番メモリ食った。32G + SWAP 12Gぐらい。SWAPメモリを拡張して乗り切った。
# [ 0% 0/1] analyzing Android.bp files and generating ninja file at out/soong/build.aosp_rpi4_car.ninja
難所②
足りないソフトがあった、byacc
とflex
。
# meson.build:1980:17: ERROR: Program 'byacc' not found or not executable
$ sudo apt install byacc
# meson.build:1991:14: ERROR: Program 'flex' not found or not executable
$ sudo apt install flex
5.Kernelもビルドしたい場合
Kernelをビルドしなくても動作確認はできたが、もしKernelをビルドする場合は下記の通り。例では~/android_kernel
でrepo、ビルドを実施している。
bazel-bin/common/rpi4/arch/arm64/boot ディレクトリにKernelのイメージ類が生成される。
生成されたファイルを Android ソースツリー~/aaos側
の device/brcm/rpi4-kernel ディレクトリ内の既存のファイルと置き換えて、手順4のビルドに含める。
$ mkdir ~/android_kernel
$ cd ~/android_kernel
$ repo init -u https://android.googlesource.com/kernel/manifest -b common-android15-6.6-lts
$ curl -o .repo/local_manifests/manifest_brcm_rpi.xml -L $ https://raw.githubusercontent.com/raspberry-vanilla/android_kernel_manifest/android-15.0/manifest_brcm_rpi.xml --create-dirs
# repos syncでソースコード取得
$ repo sync
# kernel build
$ tools/bazel build --config=fast --config=stamp //common:rpi4
Raspberry piに組み込む
./rpi4-mkimg.sh
でイメージ作成される。
# イメージ作成
$ ./rpi4-mkimg.sh
# イメージが下記にディレクトリに作成される
Done, created ~/aaos/out/target/product/rpi4/RaspberryVanillaAOSP15-20241215-rpi4.img!
Raspberry Pi Imagerを取得しインストールする。
# ダウンロードしたパッケージをインストール
$ sudo dpkg -i ~/Downloas/imager_X.X.X_amd64.deb
#依存関係でエラーが出る場合は
$ sudo apt-get install -f
Raspberry Pi ImagerでmicroSDに書き込む
Raspberry Piデバイスは 「Raspberry Pi 4」、OSは「Use custom」で「RaspberryVanillaAOSP15-20241215-rpi4.img」を選択して書き込み開始。
Raspberry Pi にmicroSDを差し込み起動
Raspberry Pi にmicroSDを差し込み、電源を入れると約1,2分で画面が出てくる。
スマホとBluetoothを繋げればBluetooth Audioの再生ができる。また、Wifiのアクセスポイントに接続すれば、ネットワークもつながりブラウザアプリでインターネットもできる。
反応も良くサクサク動く。Android Automotiveの動作確認は別記事で投稿する。
参考にしたサイト
- https://zenn.dev/turing_motors/articles/9c18325ffdfb57
- https://note.com/stable_version2/n/n497c87f5fdc3
- https://medium.com/make-android/android-automotive-os-14-on-a-raspberry-pi-4-e83b2f8ca353
このページには、Android オープンソース プロジェクトにより作成および公開されたコンテンツの複製が含まれており、クリエイティブ・コモンズ 4.0表示ライセンス の規約に基づいて利用されています。