背景
Hikey960でのAOSPのビルド方法をすぐに忘れてしまい、毎回ビルド時にトラブってしまうのでメモ
手順
-
AOSPのビルド
$ repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r69 $ repo sync -j20 $ ./device/linaro/hikey/fetch-vendor-package.sh $ . ./build/envsetup.sh $ lunch hikey960-userdebug $ make -j20
-
Kernelのビルド
ビルドしたAOSPイメージをHikey960に書き込んで起動したところ以下のBinderエラーが大量に出力された。binder: 467:467 ioctl 40046210 7ff5391764 returned -22
cmd:40046210(BINDER_ENABLE_ONEWAY_SPAM_DETECTION)がkernelでサポートされていないことが原因。
AOSPドキュメント記載のkernelだとこのコマンドはサポートしていそうだったので、これをビルドする。$ mkdir repo-common $ cd repo-common $ repo init -u https://android.googlesource.com/kernel/manifest -b common-android12-5.4 $ repo sync -j8 -c $ rm -rf out $ BUILD_CONFIG=common/build.config.hikey960 build/build.sh
-
ファイルのコピー
\${AOSP_TOPDIR}device/linaro/hikey-kernel/hikey960/5.4/ 内のオブジェクトをすべて削除し、out/android12-5.4/dist/ 内のカーネルビルドからビルド アーティファクトを ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/ にコピー (AOSP doc引用) -
DTB連結
cat device/linaro/hikey-kernel/hikey960/5.4/Image.gz device/linaro/hikey-kernel/hikey960/5.4/hi3660-hikey960.dtb > device/linaro/hikey-kernel/hikey960/5.4/Image.gz-dtb
-
ビルド
$ . ./build/envsetup.sh $ lunch hikey960-userdebug $ make -j20 | tee buildlog.txt
-
書き込み
SW1, SW3 : ON, SW2 : OFFしてHikey960を起動した状態で以下のコマンドを入力$ sudo ./device/linaro/hikey/installer/hikey960/flash-all.sh
書き込み失敗した場合はやり直すと解消する。
-
起動
ディスプレイをHDMI接続して起動する(未接続だと何故か正常に起動できずadbやscrcpyも使えない。