RK3568 Android13 源码编译

提示:RK3568 Android13 源码编译 脚本,源码编译管理方式优化


假设 源码 sdk 已经在ubuntu 上部署好了。接下来是编译的工作,这里核心规整编译脚本,对编译步骤简要给出。

获取源码

假设所有的编译环境编译脚本已经配置,拿到android 源码,解压

tar -vxf rk3568android13full20240918.tar.xz


drwxrwxr-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.sh


wfc@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.sh
	lunch 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}.img
	
	cp ./${FS_SW_BIN_PATH}/Image-rk3566_r/rk3566_r-ota-*.zip ./${FS_SW_BIN_PATH}/${FS_SW_VERSION}/${FS_SW_VERSION}_ota.zip
	
	rm -rf ./${FS_SW_BIN_PATH}/Image-rk3566_r
	
    return 0;
}


binPac;

总结

  • 这里以 RK3568 Android13 编译流程做了一个总结,RK体系356X 系列配置基本这个流程,参数稍微修改。
  • 其它平台,如MTK 平台,脚本的应用非常广泛,实际开发中 也是如此。
<think>好的,我现在需要解决用户在RK3568 Android11源码编译User版本时默认开启USB调试的问题。首先,我需要确认用户的需求:他们希望在编译User版本时,默认启用USB调试模式,这样设备在出厂后无需手动设置即可通过USB进行调试。 首先,我得回忆一下Android系统中的USB调试相关配置。USB调试通常由系统属性`ro.debuggable`和`persist.sys.usb.config`控制。User版本默认情况下,`ro.debuggable`设为0,而Userdebug或Eng版本可能设为1。此外,`persist.sys.usb.config`可能默认是mtp,需要改成包含adb的配置,比如mtp,adb。 接下来,我需要找到在源码中修改这些属性的位置。常见的做法是修改系统属性文件,比如`system/core/rootdir/init.usb.rc`或者在设备特定的makefile中设置。对于RK3568这样的平台,可能会有设备特定的配置目录,比如`device/rockchip/rk356x`。 可能还需要检查`build/make/core`中的main.mk,确认User版本的编译类型是否覆盖了某些属性。另外,`system.prop`文件也可能包含这些属性的设置,需要检查设备目录下的prop文件。 另一个可能性是修改`default.prop`,但需要注意在编译后是否会被覆盖。此外,SELinux策略可能会影响adb的权限,需要确保相关域有足够的权限。 用户提到的是User版本,所以需要确保修改后的配置不会被编译脚本重置。可能需要检查device.mk或product.mk中的PRODUCT_PROPERTY_OVERRIDES,添加对应的属性覆盖。 步骤大致如下: 1. 找到设备特定的系统属性配置文件,如device.mk,添加ro.debuggable=1和persist.sys.usb.config=mtp,adb。 2. 检查init脚本,确保USB配置正确应用。 3. 处理SELinux策略,允许adbd运行。 4. 重新编译并验证是否生效。 需要注意,User版本通常不允许调试,修改这些可能会影响系统安全性,用户需要自行承担风险。此外,某些系统属性可能被编译系统覆盖,需要确认是否正确覆盖。 最后,测试编译后的镜像,连接设备查看adb devices是否识别,以及ro.debuggable的值是否正确。</think>在RK3568 Android11的User版本中开启USB调试,需通过源码层修改系统属性配置。以下是分步操作指南: --- ### **步骤1:修改系统属性** **核心文件定位**: 在设备树目录中查找`device/rockchip/rk356x/`路径下的`.mk`或`system.prop`文件(具体路径可能因厂商定制略有不同)。 **修改内容**: 添加或覆盖以下属性: ```makefile # 在device.mk或类似文件中添加 PRODUCT_PROPERTY_OVERRIDES += \ ro.debuggable=1 \ persist.sys.usb.config=mtp,adb \ sys.usb.configfs=1 ``` --- ### **步骤2:配置USB初始化脚本** **文件路径**: `system/core/rootdir/etc/init.hardware.rc` 或 `device/rockchip/common/init.connectivity.rc` **修改内容**: 确保USB模式包含`adb`: ```rc on boot setprop persist.sys.usb.config mtp,adb ``` --- ### **步骤3:处理SELinux策略** **文件路径**: `device/rockchip/sepolicy/`目录下的`adbd.te`或`file_contexts` **修改内容**: 确保adbd进程有足够权限: ```te # 允许adbd访问调试属性 allow adbd debug_prop:property_service set; ``` --- ### **步骤4:编译验证** 1. **全量编译**: ```bash source build/envsetup.sh lunch rk3568-user # 选择User版本编译目标 make -j8 ``` 2. **烧录镜像**: 使用`fastboot`或厂商工具烧录生成的固件(如`rockdev/Image-xxx/`目录下的镜像)。 3. **验证ADB**: ```bash adb devices # 应显示设备序列号 adb shell getprop ro.debuggable # 预期输出"1" ``` --- ### **注意事项** 1. **安全性风险**:User版本默认关闭调试权限,强行开启可能导致安全漏洞,仅建议用于开发测试环境。 2. **厂商定制差异**:部分RK3568 SDK可能已封装USB配置逻辑,需检查`BoardConfig.mk`或`vendor/rockchip`目录下的覆盖配置。 3.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野火少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值