您可以使用 Android 開源項目 (AOSP) 構建和相關的硬件特定二進製文件為 Nexus 和 Pixel 設備創建構建。有關可用的 Android 版本和目標設備,請參閱源代碼標籤和版本。
您還可以為DragonBoard 845c 、 HiKey 960 、 Khadas VIM3和Qualcomm Robotics Board RB5 Android 參考板創建構建版本,這些參考板旨在幫助非移動組件供應商開發和移植驅動程序到 Android 版本。使用參考板可以簡化升級工作,縮短新 Android 設備的上市時間,通過使 ODM/OEM 能夠從更廣泛的兼容組件中進行選擇來降低設備成本,並提高組件供應商的創新速度。
Google 支持DragonBoard 845c 、 HiKey 960 、 Khadas VIM3和Qualcomm Robotics Board RB5 Android 參考板。 AOSP 為這些板提供內核源代碼和板支持,因此開發人員可以輕鬆地創建和調試外圍驅動程序、進行內核開發以及執行其他任務,而減少 OEM 負擔。
龍板 845c
DragonBoard 845c 是 RB3 平台的一部分,可從96boards.org 獲得。
圖 1. DragonBoard 845c
編譯用戶空間
使用以下命令在 DragonBoard 845c 上下載和構建 Android。
下載 Android 源代碼樹:
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
下載當前的供應商包:
./device/linaro/dragonboard/fetch-vendor-package.sh
構建 AOSP:
. ./build/envsetup.sh
lunch db845c-userdebug
make -j24
安裝本地鏡像
引導 db845c 進入快速引導模式。
運行以下命令:
./device/linaro/dragonboard/installer/db845c/flash-all-aosp.sh
如有必要,您可以通過在 USB 閃存模式下啟動 db845c 後運行以下腳本來執行 QDL 板恢復(請參閱DragonBoard 恢復):
./device/linaro/dragonboard/installer/db845c/recovery.sh
構建內核
要構建 DragonBoard db845c Android 通用內核映像 (GKI) 內核工件:
運行以下命令以克隆內核源代碼和預構建的 Android 工具鏈並構建腳本。
mkdir repo-common
cd repo-common
repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
repo sync -j8 -c
rm -rf out
BUILD_CONFIG=common/build.config.db845c ./build/build.sh
刪除
${AOSP_TOPDIR}device/linaro/dragonboard-kernel/android-mainline/
中的所有對象,然後將構建工件從out/android-mainline/dist/
複製到${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
然後重建用戶空間:make TARGET_KERNEL_USE=mainline -j24
並使用生成的 boot.img 和 super.img 刷新設備(請參閱編譯用戶空間)。
測試 GKI 內核:
在artifacts中,下載 Image。
壓縮圖像
gzip Image
將其複製到
${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
。重建 AOSP 並使用新的 boot.img 刷新設備(請參閱編譯用戶空間)。
HiKey 960 板
HiKey 960 板可從 Amazon 和Lenovator 購買。
圖 2. Lenovator 的 HiKey 960 開發板
編譯用戶空間
使用以下命令在 HiKey 960 板上下載並構建 Android。
下載 Android 源代碼樹
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
下載當前的供應商包
./device/linaro/hikey/fetch-vendor-package.sh
建造
. ./build/envsetup.sh
lunch hikey960-userdebug
make -j24
安裝本地鏡像
打開開關3選擇fastboot模式(詳見HiKey 960入門指南)。
給電路板供電。
Flash 本地圖像:
./device/linaro/hikey/installer/hikey960/flash-all.sh
關閉開關 3 並重啟電路板。
構建內核
構建 HiKey960 Android GKI 內核工件:
運行以下命令:
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/
中的所有對象,然後將構建工件從內核 build inout/android12-5.4/dist/
複製到${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/
連接 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
構建 Android 用戶空間
lunch hikey960-userdebug
make TARGET_KERNEL_USE=5.4 HIKEY_USES_GKI=true -j24
並使用新內核刷新設備(請參閱編譯用戶空間)
測試通用內核映像 (GKI) 內核
在artifacts中,下載
Image
文件並將其複製到${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/
。壓縮圖像並連接 DTB
gzip ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/Image
cat ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/Image.gz ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/hi3660-hikey960.dtb > ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/Image.gz-dtb
- 使用新內核構建並刷新設備(請參閱編譯用戶空間)。
設置序列號
要設置隨機序列號,請運行:
fastboot getvar nve:SN@16\_DIGIT\_NUMBER
Bootloader 使用androidboot.serialno=
將生成的序列號導出到內核。此參數在 Android 11 及更低版本中通過內核命令行傳遞,在內核版本為 5.10 或更高版本的 Android 12 中通過 bootconfig 傳遞。
設置顯示器分辨率
編輯device/linaro/hikey/hikey960/BoardConfig.mk
參數BOARD_KERNEL_CMDLINE
並配置video
設置。例如,24 英寸顯示器的設置為video=HDMI-A-1:1280x800@60
。
VIM3 和 VIM3L 板
Khadas 的 Vim3 和 VIM3L 板可從Khadas 網站獲得
圖 3. Khadas 的 VIM3 開發板
編譯用戶空間
使用以下命令在 VIM3 板上下載和構建 Android。
下載 Android 源代碼樹:
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
建造:
. ./build/envsetup.sh
lunch yukawa-userdebug
make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3=true -j24
默認情況下,Android 使用 5.10 內核構建。要使用內核 5.4 預構建:
make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3=true TARGET_KERNEL_USE=5.4 -j24
對於 VIM3L,使用:
make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3L=true -j24
安裝初始映像
按照VIM3 刷機說明將開發板置於 USB 升級模式。
將初始圖像閃存到 RAM:
cd path/to/aosp/device/amlogic/yukawa/bootloader/
./tools/update write u-boot_kvim3_noab.bin 0xfffa0000 0x10000
./tools/update run 0xfffa0000
./tools/update bl2_boot u-boot_kvim3_noab.bin
- 如果遇到權限問題,請參閱udev 規則部分添加相應的 USB 規則。
- 如果
tools/update
不起作用,請使用pyamlboot 工具來刷新板。
U-Boot 啟動並運行 fastboot 後,運行以下命令:
fastboot oem format
fastboot flash bootloader u-boot_kvim3_noab.bin
fastboot erase bootenv
fastboot reboot bootloader
拔下並插入電源線。
開發板應該啟動到剛剛刷入的 U-boot 並進入 fastboot 模式。
閃爍的圖像
進入快速啟動模式(有關說明,請參閱上一節)。
刷新所有 Android 圖像:
cd out/target/product/yukawa
fastboot flash boot boot.img
fastboot flash super super.img
fastboot flash cache cache.img
fastboot flash userdata userdata.img
fastboot flash recovery recovery.img
fastboot flash dtbo dtbo-unsigned.img
fastboot reboot
構建內核
要為 VIM3 或 VIM3L 構建內核工件:
下載其他工具鏈:
git clone https://android.googlesource.com/platform/prebuilts/gas/linux-x86 ${AOSP_TOPDIR}/prebuilts/gas/linux-x86
克隆內核源代碼:
# for 4.19 git clone https://android.googlesource.com/kernel/hikey-linaro -b android-amlogic-bmeson-4.19
# for 5.4 git clone https://android.googlesource.com/kernel/hikey-linaro -b android-amlogic-bmeson-5.4
# for 5.10 git clone https://android.googlesource.com/kernel/hikey-linaro -b android-amlogic-bmeson-5.10
# for 5.15 git clone https://android.googlesource.com/kernel/hikey-linaro -b android-amlogic-bmeson-5.15
導出構建變量:
export PATH=${AOSP_TOPDIR}/prebuilts/clang/host/linux-x86/clang-r445002/bin:$PATH
export PATH=${AOSP_TOPDIR}/prebuilts/gas/linux-x86:$PATH
export PATH=${AOSP_TOPDIR}/prebuilts/misc/linux-x86/lz4:$PATH
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
export LLVM=1
構建內核:
cd hikey-linaro
make meson_defconfig
make DTC_FLAGS="-@" -j24
壓縮內核並將 build_artifacts 複製到
${AOSP_TOPDIR}/device/amlogic/yukawa-kernel
:lz4c -f arch/arm64/boot/Image arch/arm64/boot/Image.lz4
KERN_VER=4.19 # for 4.19 kernel
KERN_VER=5.4 # for 5.4 kernel
KERN_VER=5.10 # for 5.10 kernel
KERN_VER=5.15 # for 5.15 kernel
for f in arch/arm64/boot/dts/amlogic/*{g12b-a311d,sm1}-khadas-vim3*.dtb; do cp -v -p $f ${AOSP_TOPDIR}/device/amlogic/yukawa-kernel/${KERN_VER}/$(basename $f) done
cp -v -p arch/arm64/boot/Image.lz4 ${AOSP_TOPDIR}/device/amlogic/yukawa-kernel/${KERN_VER}/Image.lz4
高通機器人板 RB5
機器人板 RB5 可從96boards.org 獲得。
圖 4.機器人板 RB5
編譯用戶空間
使用以下命令在 RB5 上下載和構建 Android。
下載 Android 源代碼樹:
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
下載當前的供應商包:
./device/linaro/dragonboard/fetch-vendor-package.sh
構建 AOSP:
. ./build/envsetup.sh
lunch rb5-userdebug
make -j24
安裝本地鏡像
引導 RB5 進入快速啟動模式。
運行以下命令:
./device/linaro/dragonboard/installer/rb5/flash-all-aosp.sh
如有必要,您可以在以 USB 閃存模式啟動 RB5 後運行以下腳本來執行 QDL 板恢復(請參閱RB5 恢復):
./device/linaro/dragonboard/installer/rb5/recovery.sh
構建內核
要構建 RB5 Android 通用內核映像 (GKI) 內核構件:
運行以下命令來克隆內核源代碼和預構建的 Android 工具鏈並構建腳本:
mkdir repo-common
cd repo-common
repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
repo sync -j8 -c
rm -rf out
BUILD_CONFIG=common/build.config.db845c ./build/build.sh
刪除
${AOSP_TOPDIR}device/linaro/dragonboard-kernel/android-mainline/
中的所有對象,然後將構建工件從out/android-mainline/dist/
複製到${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
,然後使用以下命令重建用戶空間:make TARGET_KERNEL_USE=mainline -j24
並使用生成的 boot.img 和 super.img 刷新設備(請參閱編譯用戶空間)。
測試 GKI 內核:
- 查看最新的 kernel_aarch64 構建。
- 在artifacts中,下載 Image。
壓縮圖像
gzip Image
將其複製到
${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
。重建 AOSP 並使用新的 boot.img 刷新設備(請參閱編譯用戶空間)。