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?

Android Automotive OSをラズパイに組み込む。

Last updated at Posted at 2024-12-22

はじめに

Android Automotive OSをラズパイに組み込むまでの手順をまとめる。下記GitHubの手順に従い実施した。手持ちのパソコンの性能が良くなかったのでビルドに時間はかかったが、大きな問題なく試すことができた。

目次

Android Automotive OSとは

Andoroid Automotive OSは車載機器用のAndoroid OS。似たようなものにAndroid Autoがあるが、違いをイメージ図にまとめてみた。Android Autoはスマホ側の機能を車載機器に表示するので、頭脳はスマホ側にある。AppleのCarPlayもAndoroid Autoと同様の仕組みで実現している。対してAndoroid Automotiveは車載機器自体をAndroid化したもの。

image.png

戻る

試した環境

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メモリサイズの変更は下記の通り。

cmd
# 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. GitとRepoの準備
  2. ビルドに必要なソフト取得
  3. Repoでビルド環境取得
  4. ビルド
  5. Kernelもビルドしたい場合

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はソースコードをバージョン管理するツール。

cmd
$ sudo apt install git

$ git --version
# git version 2.XX.X

初期設定

cmd
$ git config --list

# ユーザー名設定
$ git config --global user.name "yourname"

# メールアドレス設定
$ git config --global user.email your_address@xxx.com

設定確認

cmd
$ git config --list

# user.name=yourname
# user.email=your_address@xxx.com

Repo インストール

Repoは大量のGitリポジトリを一括管理するためのツール。Googleが開発したツール。

cmd

#移動
$ 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 installPython3 pipで取得。

cmd
$ 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時間ぐらいかかった。

cmd
# フォルダ作成
$ 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環境が必要。。

cmd
$ . build/envsetup.sh
$ lunch aosp_rpi4_car-ap4a-userdebug
$ make bootimage systemimage vendorimage

完了すると下記となる。

cmd
#### build completed successfully (XX:XX:XX (hh:mm:ss)) ####

私の環境では途中ビルドが止まる難所があった。

難所①
メモリが足りなくて、ビルドが落ちた。おそらくここで一番メモリ食った。32G + SWAP 12Gぐらい。SWAPメモリを拡張して乗り切った。

cmd
# [  0% 0/1] analyzing Android.bp files and generating ninja file at out/soong/build.aosp_rpi4_car.ninja 

難所②
足りないソフトがあった、byaccflex

cmd
# 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のビルドに含める。

cmd
$ 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でイメージ作成される。

cmd
# イメージ作成
$ ./rpi4-mkimg.sh

# イメージが下記にディレクトリに作成される
Done, created ~/aaos/out/target/product/rpi4/RaspberryVanillaAOSP15-20241215-rpi4.img!

Raspberry Pi Imagerを取得しインストールする。

cmd
# ダウンロードしたパッケージをインストール
$ 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の動作確認は別記事で投稿する。

戻る

参考にしたサイト

このページには、Android オープンソース プロジェクトにより作成および公開されたコンテンツの複製が含まれており、クリエイティブ・コモンズ 4.0表示ライセンス の規約に基づいて利用されています。

戻る

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?