0
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 OS15をGoogle Pixel Tablet(2023)に書き込む

Last updated at Posted at 2025-06-11

これは何

Androidはスマートフォン向けのOSだけではなく、例えばTV向けのビルドバリアントや、自動車のダッシュボード搭載向けのビルドバリアントがあります。

後者の自動車向けのビルドバリアントはAndroid Automotive OSと呼ばれています。 https://source.android.com/docs/automotive

note: Android AutoとAndroid Automotive OSは別物です!Android AutoというのはAndroidスマホの画面をミラーリングできる機能を搭載していることを示します。Android Automotive OSはAndroidOSが乗っていることを示します。

じゃあAndroid Automotive OSっていうのはどんな感じなのか実機で試すとき、ちょっとお試しで車を買うのは大変なので、お試し用に市販のタブレットにAndroid Automotive OS を書き込むことができます。

Google Pixel Tablet(2023)が2025年現在、もっとも入手性が良いと思います。 https://developer.android.com/training/cars/testing/aaos-on-pixel
(他にはRaspberry Pi4B以降も広く使われています https://github.com/raspberry-vanilla/android_local_manifest

この文章は現時点で最新のAndroid Automotive OS15をGoogle Pixel Tablet(Tangorproというコードネームがついています)に書き込む手順を示します。
メモとして書いておくと aosp_tangorpro_car-bp1a-userdebug が今回のゴールです。

準備する物

  • 4コア以上(できれば16コア以上)で、16GB以上(できれば64GB以上)のメモリを積んだ x64対応アーキテクチャのPC
  • ディスクの↑空き容量が400GBくらい必要です
  • Ubuntu24.04
  • Google Pixel Tablet

Pixel TabletのBootloader Unlock

開発者設定を有効にした後

Settings > System > Developer
OEM unlockingを有効にしておいてください。

Ubuntuの準備

Dockerを使うことも可能ですが、素朴に新規PCを立ち上げてUbuntu24.04をインストールした、という想定で書きます。(なんらかの余っているPCを使う、というシチュエーションを想定しています)

Android OS ビルドに必要なライブラリのインストール

必要なパッケージ

Ubuntu 24.04だとapt-getではなくてaptなことに注意しましょう。

sudo apt update && sudo apt 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

GitConfig

以下を参考にgitのnameとemailを設定しておきます。(checkout時に未設定では失敗するので)

git config --global user.name "My Name"
git config --global user.email myname@example.com

Swapのメモリ領域を確保

64GB未満のRAMではAndroidのビルド中に失敗するため、明示的にSwapメモリを64GB確保しておきます。

sudo swapoff /swapfile
sudo fallocate -l 64G /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Repoのインストール

Android OSのソースコードをチェックアウトするためのRepoをインストールします。
Ubuntu24.04にインストール済みの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

USB接続したAndroid端末を認識するためのudevルール追加

Pixel TabletをPCに繋いでも検出されないことがあります。udevルールファイルを作成して対処します。

新しいudevルールファイルを作成

sudo vi /etc/udev/rules.d/51-android.rules

/etc/udev/rules.d/51-android.rulesに対してUSBベンダーが18d1(Google製)の端末を検出するように記載

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

このあとにUSBケーブルでPixel TabletをPCに接続して

lsusb

を実行して、認識できていることを確認してください。

AppArmorの無効化

AOSPビルド時に警告が出るため、一時的に無効化します。

sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
元に戻すのはこれです

sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=1

AndroidOSのソースコードチェックアウト

自分のホームディレクトリの直下にaospというディレクトリを作って、そこでビルドします。

ディレクトリ作成

mkdir -p ~/aosp

移動

cd ~/aosp

Repoの初期化

repo init -u https://android.googlesource.com/platform/manifest -b android-15.0.0_r23
android-15.0.0_r23をなぜ選んだか https://source.android.com/docs/setup/reference/build-numbers ここでPixel Tabletが対象になっているAndroid15系で最新のリビジョンだったためです。 android-15.0.0_r23 と書いてあります。(android-15.0.0_r26ではうまく動かなかった…)

このときBuild IDBP1A.250305.020.T2 であることを覚えておいてください。

local-manifestsをまとめてくれているリポジトリから設定を取得

git clone https://github.com/alexanderwolz/android_device_whaleshark_manifest.git -b android-15 .repo/local_manifests

実際のAndroidのソースコードを取得

repo sync -c -j$(nproc --all)

デバイス固有のドライバを取得

ここからGoogle Pixel TabletのAndroid 15.0.0_r23向けのデバイスドライバをダウンロードします。
先ほどBuild IDとしてBP1A.250305.020.T2というのを覚えていたので、ページ内を検索してPixel Tablet向けのものをダウンロードします。

cd ~/Downloads

解凍

tar -xvf google_devices-tangorpro-*.tgz

解凍してできた extract-google_devices-tangorpro.shファイルをhomeのaospにコピー

cp ~/Downloads/extract-google_devices-tangorpro.sh ~/aosp

aospフォルダにGoogle Pixel Tabletドライバの取得

cd ~/aosp
bash extract-google_devices-tangorpro.sh

ここで
aosp/vendor/google_devices/tangorpro というフォルダの中にファイルが作られていれば成功です。

Android Automotive OSのビルド

cd ~/aosp
source build/envsetup.sh

ビルド設定の指定

lunch whaleshark_tangorpro-bp1a-userdebug

OS本体のビルド(1時間から、スペックによっては半日以上かかります)

m -j$(nproc --all)

ハードウェアのスタブ実装のビルド(CAN通信などを持っていない端末なので)

m -j$(nproc --all) android.hardware.automotive.vehicle@2.0-default-service

ここまでが無事完了していると
~/aosp/out/target/product/tangorpro/ つまり、Home以下のaosp/out/target以下に機種名であるtangorproがあり、以下に書き込みイメージができているはずです。

実機への書き込み

ここが一番丁寧だとおもいました。Fastboot Modeの写真などものっている!

cd ~/aosp/out/target/product/tangorpro/
export ANDROID_PRODUCT_OUT=$(pwd)
adb reboot bootloader #再起動
fastboot flashing unlock
fastboot flash bootloader $ANDROID_PRODUCT_OUT/bootloader.img 
fastboot reboot bootloader
fastboot -w flashall #書き込み

adb root は一時 rootです。
この状態でPixel Tabletが再起動してロゴのまま進まなくなっていると思います。

adb root
#Temporary disable the userdata checkpoint 
adb wait-for-device root; sleep 3; adb shell vdc checkpoint commitChanges; sleep 2 
#Enable remount
adb remount && sleep 2 && adb reboot && echo "rebooting the device" && adb wait-for-device root && sleep 5 && adb remount

Automotive 固有のファイルをデバイスにコピーする

adb sync vendor && adb reboot

これで再起動した後、ロゴのまま進まないという症状は直ります。
(気になる方はブート中にadb logcat *Eとかでエラーが出ていないか確認しておくといいかも)

image.png

ADB経由で設定を書き換えて遊んでみよう

解像度のスケーリング変更

adb root && adb shell wm size 1600x2560 && adb shell wm density 300 && adb reboot

位置情報の偽装

adb unroot && adb shell cmd location set-location-enabled true && adb root && adb shell appops set 0 android:mock_location allow && adb shell cmd location providers add-test-provider gps && adb shell cmd location providers set-test-provider-enabled gps true && adb shell cmd location providers set-test-provider-location gps --location 34.37786100,132.50426700

運転中にするとき(つまり、運転中は危ないのでアプリが操作不能になってほしいですね!)

adb shell cmd car_service inject-vhal-event 0x11600207 30 -t 2000 \
&& adb shell cmd car_service inject-vhal-event 0x11400400 8 \
&& adb shell cmd car_service inject-vhal-event 0x11200402 false

駐車状態にするとき(このときはアプリが操作可能になってほしいですね!)

adb shell dumpsys car_service inject-vhal-event 0x11600207 0 \
&& adb shell dumpsys car_service inject-vhal-event 0x11400400 4

参考URL

Ubuntu24.04の環境でAndroid Automotive OSをビルドする
https://qiita.com/rairaii/items/a3fc4fca41d169d8a518

Android Automotive OS で動作する特権アプリ (Privileged App) の開発方法
https://qiita.com/rairaii/items/d00fc16da67b66534853

Repository Collection for Whale Shark AAOS
https://github.com/alexanderwolz/android_device_whaleshark_manifest/tree/android-15

Whale Shark - an AAOS device configuration for Google Pixel Tablet (tangorpro)
https://github.com/alexanderwolz/android_device_whaleshark_tangorpro

0
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
0
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?