您可以使用 Android 开源项目 (AOSP) build 和针对特定硬件的相关二进制文件来创建适用于 Nexus 和 Pixel 设备的 build。如需查看可用的 Android build 及其针对的目标设备,请参阅源代码标记和 build。
此外,您还可以创建适用于 DragonBoard 845c、HiKey 960 和 Khadas VIM3 Android 参考开发板的 build,此类参考开发板旨在帮助非移动组件供应商开发驱动程序并将其移植到各 Android 版本。使用参考开发板可以简化升级工作、缩短将新 Android 设备推向市场所需的时间、降低设备成本(因为使用参考开发板时,ODM/OEM 可以从更多兼容组件中进行选择),并加快组件供应商的创新速度。
Google 支持 DragonBoard 845c、HiKey 960 和 Khadas VIM3 Android 参考开发板。AOSP 可为这些开发板提供内核源代码和开发板支持,这样开发者就能够以更低的 OEM 费用轻松创建和调试外围设备驱动程序、进行内核开发,以及执行其他任务。
DragonBoard 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
构建:
. ./build/envsetup.sh
lunch db845c-userdebug
make -j24
安装本地映像
启动 db845c 以进入 fastboot 模式(请参阅 DragonBoard 恢复)。
运行以下命令:
./device/linaro/dragonboard/installer/db845c/flash-all-aosp.sh
或者,您也可以在 USB 刷写模式下启动 db845c,然后运行以下脚本来执行 QDL 开发板恢复:
./device/linaro/dragonboard/installer/db845c/recovery.sh
刷写来自 ci.android.com 的映像
您可以使用 flash.android.com 轻松测试来自 ci.android.com 的最新 AOSP build 工件。您无需进行构建,但在开始之前,您需要准备好一个已刷写 AOSP 中最新引导加载程序的 DragonBoard 845c。
在网络浏览器中,转到 flash.android.com。
点击 Get Started,然后跳过第 1 步(因为您的设备已处于开发者模式)。
在 available 中,找到“DragonBoard 845c (db845c)”。如果没有看到该选项,请点击 + Add new device,然后从列表中选择“Android gadget”或“Android device”。
选择 DragonBoard 845c (db845c)。
点击 Select a build ID,然后选择最新的 build。
点击 Install。
按照剩下的说明操作,并等待系统刷写开发板。
恭喜,您的 DragonBoard 845c 现在已在运行最新的 AOSP build 了!
构建内核
如需构建 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/
中的 build 工件复制到${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
,然后使用以下命令重新构建用户空间:make TARGET_KERNEL_USE=mainline -j24
并使用新内核刷写设备(请参阅编译用户空间)
测试 GKI 内核:
在 artifacts 中,下载
Image.gz
并将其复制到${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
。构建新内核并用它刷写设备(请参阅编译用户空间)。
HiKey 960 开发板
HiKey 960 开发板可从亚马逊和 Lenovator 上购买。
图 2. Lenovator 提供的 HiKey 960 开发板
编译用户空间
您可以使用以下命令在 HiKey 960 开发板上下载 Android 源代码树并进行构建。
下载 Android 源代码树:
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
构建:
. ./build/envsetup.sh
lunch hikey960-userdebug
make -j24
安装初始映像
打开开关 3,选择 fastboot 模式(有关详情,请参阅 HiKey 960 入门指南)。
启动开发板。
刷写初始映像:
cd device/linaro/hikey/installer/hikey960
关闭开关 3,然后重启开发板。
刷写映像
打开开关 3,进入 fastboot 模式。
运行以下命令来刷写映像:
fastboot flash boot out/target/product/hikey960/boot.img
关闭开关 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/
中的所有对象,然后将out/android12-5.4/dist/
中的内核 build 中的 build 工件复制到${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
引导加载程序会使用 androidboot.serialno=
将生成的序列号导出到内核。
设置显示器分辨率
修改 device/linaro/hikey/hikey960/BoardConfig.mk
参数 BOARD_KERNEL_CMDLINE
并配置 video
设置。例如,针对 24 英寸显示器的设置为 video=HDMI-A-1:1280x800@60
。
VIM3 和 VIM3L 开发板
Khadas 网站上提供了 Khadas 的 Vim3 和 VIM3L 开发板
图 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 是使用 4.19 内核构建的。如需使用内核 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 模式。
刷写映像
进入 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 构建内核工件,请执行以下操作:
下载其他工具链:
cd ${AOSP_TOPDIR}
git clone https://android.googlesource.com/platform/prebuilts/gas/linux-x86 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
导出构建变量:
export PATH=${AOSP_TOPDIR}/prebuilts/clang/host/linux-x86/clang-r399163b/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
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/$(basename $f)-${KERN_VER} done
cp -v -p arch/arm64/boot/Image.lz4 ${AOSP_TOPDIR}/device/amlogic/yukawa-kernel/Image.lz4-${KERN_VER}