资讯动态

保姆级教程:用Rockchip RK3588的build.sh脚本编译Android 12 SDK(从环境配置到烧写避坑)

发布时间:2026/9/12 8:01:54 来源:尧图企业网站定制
保姆级教程用Rockchip RK3588的build.sh脚本编译Android 12 SDK从环境配置到烧写避坑第一次拿到RK3588开发板和配套的Android 12 SDK时面对复杂的编译环境和陌生的build.sh脚本很多开发者都会感到无从下手。本文将手把手带你完成从Ubuntu环境配置到最终烧写固件的全流程特别针对编译过程中容易踩坑的环节给出解决方案。1. 环境准备与SDK初始化1.1 硬件与软件要求在开始之前请确保你的开发环境满足以下要求硬件配置至少16GB内存32GB更佳200GB以上可用磁盘空间建议SSDx86_64架构的PC或服务器软件依赖Ubuntu 18.04/20.04 LTS推荐20.04OpenJDK 8Android 12要求Python 3.6关键工具链sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig注意RK3588的Android 12 SDK对Ubuntu 18.04和20.04有最佳兼容性其他发行版可能会遇到工具链问题。1.2 获取SDK代码Rockchip SDK使用repo工具管理代码仓库初始化步骤如下配置git身份信息git config --global user.name Your Name git config --global user.email your.emailexample.com初始化repo客户端mkdir ~/rk3588_android12 cd ~/rk3588_android12 repo init -u https://gitlab.com/rockchip-android/rk/platform/manifest.git -b android-12.0同步代码耗时较长repo sync -j$(nproc) --no-tags --no-clone-bundle常见问题处理同步中断使用repo sync --fail-fast定位具体仓库问题磁盘空间不足可通过repo sync --no-clone-bundle减少临时文件占用2. 编译环境配置详解2.1 初始化编译环境SDK同步完成后需要设置环境变量和选择目标设备source build/envsetup.sh lunch在lunch菜单中选择对应的产品配置例如Which would you like? [aosp_arm-eng] rk3588_s-userdebug关键参数说明参数格式说明rk3588_s目标设备型号userdebug编译类型带调试符号2.2 build.sh脚本解析Rockchip提供的build.sh是对标准Android编译流程的封装位于SDK根目录。通过./build.sh -h可查看帮助注意实际使用时去掉-h前的空格主要参数功能模块编译-U编译U-Boot-K用GCC编译Kernel-CK用Clang编译Kernel-A编译Android-u生成update.img打包选项-p打包镜像文件-o生成OTA包-v指定编译版本(user/userdebug)3. 分模块编译实战3.1 U-Boot编译与调试完整编译U-Boot并生成烧写文件./build.sh -U输出文件u-boot/uboot.imgu-boot/rk3588_spl_loader_v1.07.111.bin自动拷贝到rockdev/Image-rk3588_s/快速调试技巧 直接在u-boot目录编译可加速开发周期cd u-boot ./make.sh rk3588提示调试时直接烧写u-boot目录下的文件避免频繁拷贝到rockdev3.2 Kernel编译优化标准编译命令使用Clang./build.sh -CAK -d rk3588-evb1-lp4-v10参数说明-d指定设备树名称-C强制使用ClangGMS认证要求独立编译技巧 在kernel-5.10目录下执行export PATH../prebuilts/clang/host/linux-x86/clang-r416183b/bin:$PATH make CROSS_COMPILEaarch64-linux-gnu- LLVM1 LLVM_IAS1 ARCHarm64 BOOT_IMG../rockdev/Image-rk3588_s/boot.img rk3588-evb1-lp4-v10.img3.3 Android系统编译基础编译命令./build.sh -A输出文件rockdev/Image-rk3588_s/super.imgout/target/product/rk3588_s/system.img编译加速技巧增加并行编译线程export USE_CCACHE1 export CCACHE_EXEC/usr/bin/ccache ./build.sh -A -J$(nproc)跳过API检查export SKIP_API_CHECKStrue4. 固件打包与烧写4.1 生成完整固件包一次性编译所有组件并打包./build.sh -AUCKu -d rk3588-evb1-lp4-v10关键输出文件rockdev/Image-rk3588_s/update.img完整系统镜像rockdev/Image-rk3588_s/boot.img内核镜像rockdev/Image-rk3588_s/uboot.img引导加载器4.2 烧写固件避坑指南常见问题1烧写后固件未更新解决方法修改AndroidTool配置# 编辑config.ini FW_NOT_CHECKTRUE重启烧写工具后重新加载固件常见问题2分区表不匹配操作步骤先烧写parameter分区再烧写完整update.img推荐烧写命令rkdeveloptool db rk3588_spl_loader_v1.07.111.bin rkdeveloptool ul update.img5. 高级调试与优化5.1 自定义编译配置修改build.sh默认行为编辑device/rockchip/common/build/rockchip/build.sh关键变量export RK_BUILD_TYPEuserdebug export RK_KERNEL_DTSrk3588-evb1-lp4-v105.2 编译问题排查日志分析技巧查看详细编译日志./build.sh -A 21 | tee build.log常见错误代码错误现象可能原因解决方案ninja失败内存不足增加swap空间头文件缺失环境未重置执行make clean签名失败密钥不匹配检查vendor/rockchip/common/security5.3 性能优化建议CCache配置export CCACHE_DIR/path/to/ccache export CCACHE_SIZE50G内存管理export JACK_SERVER_VM_ARGUMENTS-Dfile.encodingUTF-8 -XX:TieredCompilation -Xmx8g并行编译alias mkmake -j$(($(nproc)*2))在实际项目中我发现合理配置CCache可以将二次编译时间缩短60%以上。特别是在修改内核配置后重新编译时效果尤为明显。另一个实用技巧是在SSD上创建tmpfs分区存放临时文件能显著减少I/O等待时间。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价