1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu24.04の環境でAndroid Automotive OSをビルドする

Last updated at Posted at 2024-11-20

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のビルド

ビルドのオフィシャルサイトの通り進めれば良い

手順としては次の通り

  1. Google Pixel TabletのOEMロックを解除しデバックモードをONにする
  2. x86_64 Linux (Ubuntu16.04推奨)にビルド環境を構築
  3. Androidのソースコードを取得
  4. Google Pixelデバイス用のベンダーイメージをダウンロード
  5. パッチを取得
  6. ビルド
  7. Automotive関連のパッケージをビルド
  8. デバイスのOSを書き換えられるように設定
  9. ビルドした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
dockerの場合
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のパッケージを取得して手動インストールして解決する

libncurses5と依存するlibtinfo5を手動インストールする
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 はバージョンが低いため最新版を取得する

~/bin に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ルールを作成する。

新しい udev ルールファイルを作成
sudo vi /etc/udev/rules.d/51-android.rules

次の内容を追記する

/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)
...
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?