Android Automotive OS とは
Android Automotive OS とはAndroidをベースに車の In-Vhiecle Infortainment (IVI) 向けのOSである。スマホをIVIに接続してスマホにインストールしていたアプリをIVIのスクリーンで利用するAndroid Autoとは名前が似ているため混乱しやすいので注意が必要だ。
オフィシャルサイトからAndroid Automotive OSに関連する情報としては次のようなことが確認できる。
- Android Automotive OS (AAOS)
- Googleによって開発された車載用のOS
- Androidの特別なバージョンであり、自動車用の組み込みシステムに特化している
- Google Automotive Service (GAS)
- GoogleからAAOS向けに提供される商用サービス
- 次のアプリケーションが統合されている
- ナビゲーション (Google Maps)
- アシスタント (Google Assistant)
- アプリストア (Google Play Store)
- OSS版とGAS版(商用版)
- OEMはGASを利用しないOSS版を利用するベンダーとGASが統合されたGAS版(商用版)を利用するベンダの2種類がある
Android Automotive OSの開発プラットフォーム
Android Automotive OSの開発プラットフォームとして Google Pixel Tablet が利用できる。オフィシャルサイトでは2024年11月の段階でGoogleが検証している機器は Google Pixel Tablet だと記載されている。
Google Pixel Tablet で開発を進めるためにはプリインストールされているタブレット用のAndroid OSをAutomotive用のOSに書き換える必要がある。
Android Automotive OSのビルド
ビルドのオフィシャルサイトの通り進めれば良い
手順としては次の通り
- Google Pixel TabletのOEMロックを解除しデバックモードをONにする
- x86_64 Linux (Ubuntu16.04推奨)にビルド環境を構築
- Androidのソースコードを取得
- Google Pixelデバイス用のベンダーイメージをダウンロード
- パッチを取得
- ビルド
- Automotive関連のパッケージをビルド
- デバイスのOSを書き換えられるように設定
- ビルドしたOSをデバイスに書き込み
Ubuntu24.04向けに必要な手順
上述のAndroidのソースコードを取得
の前に下記を実施しておくと良い
最低限必要なライブラリ
sudo apt update && sudo apt-get install curl git gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
apt update && apt-get install curl git gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
ncurses5
Ubuntu24.04 で Android Automotive OS のビルドを行う場合、Ubuntu24.04では ncurses5 が ncurses6 に置き換わってしまい存在しないためビルドエラーとなる。そこで古いUbuntuのパッケージを取得して手動インストールして解決する
curl --output libtinfo5_6.4-4_amd64.deb http://ftp.us.debian.org/debian/pool/main/n/ncurses/libtinfo5_6.4-4_amd64.deb
curl --output libncurses5_6.4-4_amd64.deb http://ftp.us.debian.org/debian/pool/main/n/ncurses/libncurses5_6.4-4_amd64.deb
sudo dpkg -i libtinfo5_6.4-4_amd64.deb
sudo dpkg -i libncurses5_6.4-4_amd64.deb
ライブラリのダウンロード先は下記のサイトから見つけることも可能
repo
Ubuntuに用意されている repo はバージョンが低いため最新版を取得する
cd
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
udev
adbでビルドしたOSを書き込む際にパーミッションエラーが発生した場合、Androidデバイスに対応するudevルールを作成する。
sudo vi /etc/udev/rules.d/51-android.rules
次の内容を追記する
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
ファイルの権限を変更してudevルールを再読み込みする。
sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
udevルールの最読み込みが終了したら、デバイスにさしていたUSBケーブルを抜き差しします。
idVendorの確認
idVendorは下記のコマンドで確認できる。Google Pixel Tableの場合は18d1
である。
$ lsusb
...
Bus 001 Device 022: ID 18d1:4ee7 Google Inc. Nexus/Pixel Device (charging + debug)
...