AOSP(Android 오픈 소스 프로젝트) 빌드 및 관련 하드웨어별 바이너리를 사용하여 Nexus 및 Pixel 기기용 빌드를 만들 수 있습니다. 사용 가능한 Android 빌드 및 대상 장치에 대해서는 소스 코드 태그 및 빌드 를 참조하십시오.
또한 비모바일 구성 요소 공급업체가 드라이버를 개발하고 Android 릴리스로 포팅하는 데 도움이 되도록 설계된 DragonBoard 845c , HiKey 960 , Khadas VIM3 및 Qualcomm Robotics Board RB5 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. 드래곤보드 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를 fastboot 모드로 부팅합니다.
다음 명령을 실행합니다.
./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
tools/bazel run //common:db845c_dist -- --dist_dir=$DIST_DIR
${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 빌드 를 봅니다.
아티팩트 에서 이미지를 다운로드합니다.
이미지를 Gzip으로 압축
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 시작 안내서 참조).
보드에 전원을 공급합니다.
플래시 로컬 이미지:
./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/
의 모든 개체를 삭제한 다음out/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) 커널 테스트
최신 kernel_aarch64 빌드 를 봅니다.
아티팩트 에서
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=
를 사용하여 생성된 일련 번호를 커널로 내보냅니다. 이 매개변수는 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
Android 사용자 공간을 재구축하고(사용자 공간 컴파일 참조) 새 커널을 플래시합니다( 이미지 플래시 참조).
퀄컴 로보틱스 보드 RB5
Robotics Board 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/
빌드 아티팩트를 복사합니다.${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
다음을 사용하여 사용자 공간을 다시 빌드합니다.make TARGET_KERNEL_USE=mainline -j24
결과 boot.img 및 super.img로 장치를 플래시합니다( 사용자 공간 컴파일 참조).
GKI 커널을 테스트합니다.
- 최신 kernel_aarch64 빌드 를 봅니다.
- 아티팩트 에서 이미지를 다운로드합니다.
이미지를 Gzip으로 압축
gzip Image
${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
에 복사합니다.AOSP를 다시 빌드하고 새 boot.img로 기기를 플래시합니다( 사용자 공간 컴파일 참조).