提示:RK3568 Android13 源码编译 脚本,源码编译管理方式优化
文章目录
- 获取源码
- 设置屏幕配置
- 确认屏幕
- 修改源码的设备树
- 修改线程数
- 整体编译Android固件
- 配置JDK java 环境 source javaenv.sh
- 使能编译 build/envsetup.sh lunch topeet_rk3568-userdebug
- 整体编译固件 ./build.sh-AUCKu
- 优化编译脚本,提升效率
- 拓展
- 总结
假设 源码 sdk 已经在ubuntu 上部署好了。接下来是编译的工作,这里核心规整编译脚本,对编译步骤简要给出。
获取源码
假设所有的编译环境编译脚本已经配置,拿到android 源码,解压
tar -vxf rk3568android13full20240918.tar.xzdrwxrwxr-x 37 wfc wfc 4096 Mar 13 17:38 rk3568_android13
drwxr-xr-x 2 nobody nogroup 4096 Feb 6 00:10 rk3568_android13_full_20240918.tar
设置屏幕配置
最终是需要屏幕来显示的,如果自己只是拿个开发板学习而言,这里可以不配置的。但是还是建议根据自己的实际屏幕 来进行配置,没有屏幕显示 则呢么搞开发呢?
确认屏幕
确定要使用的屏幕种类,这个支持的屏幕是根据硬件方案选型来决定的
修改源码的设备树
修改源码kernel-5.10/arch/arm64/boot/dts/rockchip目录下的topeet-screen-lcds.dtsi文件。
路径: rk3568_android13/kernel-5.10/arch/arm64/boot/dts/rockchip/topeet-screen-lcds.dtsi根据自己需求,修改对应的值:rockchip$ cat topeet-screen-lcds.dtsi
/************************单屏显示******************************/
#define LCD_TYPE_MIPI //in vp 1
//#define LCD_TYPE_LVDS_10_1_1024X600 //in vp 2
//#define LCD_TYPE_LVDS_10_1_1280X800_gt911 //in vp 2
//#define LCD_TYPE_LVDS_10_1_1280X800_gt9271 //in vp 2
//#define LCD_TYPE_LVDS_7_0 //in vp 2
//#define LCD_TYPE_HDMI_VP0 //hdmi in vp 0
//#define LCD_TYPE_HDMI_VP1 //hdmi in vp 1
//#define LCD_TYPE_EDP_VGA //in vp 0
修改线程数
在编译Android系统时,可以通过调整线程数来控制并行编译的任务数量,使用多线程可以加快构建速度。要注意根据Ubuntu的处理器内核总数以及内存大小来设置合适的线程数。过高的线程数可能导致系统资源的竞争,过低的线程数则不能充分利用系统的并行处理能力。找到合适的线程数可以加快编译速度,提高效率
可以在build.sh编译脚本中修改线程数,如下图所示:
这里注意一点:
线程数建议配置机器的3/4 ,配置过高编译失败,配置过低浪费了机器性能。
整体编译Android固件
注意:编译系统时一定要使用普通权限编译。
配置JDK java 环境 source javaenv.sh
进入到rk3568android13文件夹,输入以下命令设置java版本为1.8版本,确认java版本
是1.8版本之后,才可以进行下一步编译,如下图所示:
wfc@wfc-X99:~/wfc/Android/android13/rk3568_android13$ source javaenv.sh
wfc@wfc-X99:~/wfc/Android/android13/rk3568_android13$ java -version
openjdk version "1.8.0_442"
OpenJDK Runtime Environment (build 1.8.0_442-8u442-b06~us1-0ubuntu1~20.04-b06)
OpenJDK 64-Bit Server VM (build 25.442-b06, mixed mode)
使能编译 build/envsetup.sh lunch topeet_rk3568-userdebug
输入以下命令使能编译环境:
wfc@wfc-X99:~/wfc/Android/android13/rk3568_android13$ source build/envsetup.sh
wfc@wfc-X99:~/wfc/Android/android13/rk3568_android13$ lunch topeet_rk3568-userdebug
整体编译固件 ./build.sh-AUCKu
最后输入以下命令开始整体编译了
./build.sh-AUCKu
等待编译结束,在指定的文件下生成 打包相关的包文件
优化编译脚本,提升效率
上面介绍了配置环境,整编脚本。这里需要讲的就是整体编译脚本 如何写成脚本,执行编译脚本即可 直接编译。不用一步两步三步。 如下 ,在 源码目录写一个.sh 脚本,将编译的命令全部写在脚本里面,如下:
wfc_build.shwfc@wfc-X99:~/wfc/Android/android13/rk3568_android13$ cat wfc_build.sh
#!/bin/bash
source javaenv.sh
source build/envsetup.sh
lunch topeet_rk3568-userdebug
./build.sh -AUCKu
当我们需要编译固件的时候,直接 执行 脚本即可。
./wfc_build.sh
拓展
可以进一步优化脚本,写入固件属性值、日期、编译完成后 删除部分冗余文件,下面举一个例子
#!/bin/bash#生成软件路径
FS_SW_BIN_PATH=rockdev# WFC_CLOUD_20250311_V1.0.0.0
#项目名
export FS_PRODUCT_NAME=SM666_CLOUD
#日期
FS_SW_DATE=20250312
#版本号
export FS_PRODUCT_VERSION=1.0.0.0
#完整项目软件版本名
export FS_SW_VERSION=${FS_PRODUCT_NAME}_${FS_SW_DATE}_V${FS_PRODUCT_VERSION}function binPac()
{source build/envsetup.shlunch rk3566_r-userdebug./build.sh -UKAoup # 带OTA
# ./build.sh -UKAup # 无OTA mkdir ./${FS_SW_BIN_PATH}/${FS_SW_VERSION}cp ./${FS_SW_BIN_PATH}/Image-rk3566_r/update.img ./${FS_SW_BIN_PATH}/${FS_SW_VERSION}/${FS_SW_VERSION}.imgcp ./${FS_SW_BIN_PATH}/Image-rk3566_r/rk3566_r-ota-*.zip ./${FS_SW_BIN_PATH}/${FS_SW_VERSION}/${FS_SW_VERSION}_ota.ziprm -rf ./${FS_SW_BIN_PATH}/Image-rk3566_rreturn 0;
}binPac;
总结
- 这里以 RK3568 Android13 编译流程做了一个总结,RK体系356X 系列配置基本这个流程,参数稍微修改。
- 其它平台,如MTK 平台,脚本的应用非常广泛,实际开发中 也是如此。