一、什么是SDK
SDK 的全称是 Software Development Kit,中文叫软件开发工具包。
简单来说,你可以把它理解成一个“功能工具箱”。当你想在某个软件项目里实现一个复杂的功能(比如微信登录、支付、云存储),如果从头自己写,会非常耗时且困难。这时候,你就可以直接“拎”起这个现成的工具箱来用。
SDK 是为特定平台或编程语言准备的、开箱即用的“能力工具箱”,里面包含了代码库、API、文档和工具,目的是让你不用重复造轮子,就能轻松实现复杂功能。
二、SDK里面具体是什么
-
库文件 (Libraries):这是工具箱里的“实体工具”。它是预先写好的、可复用的代码或功能集合。你只需调用它,就能实现特定功能,不用自己从头写逻辑。
-
API (应用程序编程接口):这是工具箱的“使用说明书”。它告诉你如何与这个工具箱对话,比如该调用哪个函数、传递什么参数。通过 API,你的代码就能和 SDK 的功能互动。
-
开发工具和实用程序 (Tools & Utilities):这是帮助你把活儿干得更顺手的“辅助工具”。比如调试器、编译器、代码生成器等。
-
文档和示例代码 (Documentation & Samples):这是最关键的学习资料,也就是你之前问到的开发手册。它包括详细的指南、API 参考和可以直接运行的示例代码,帮助你快速上手。
三、为什么要用SDK
-
提高效率:你不用重新“发明轮子”,可以站在前人的成果上,专注于自己业务的核心逻辑。
-
降低难度:复杂的底层操作(如网络通信、加密算法)被封装成简单的函数调用,你调一下就行。
-
标准化与可靠:知名 SDK 由专业团队维护,经过大量测试,比你自己临时写的代码更稳定、更安全。
-
集成方便:SDK 通常针对特定平台或语言进行了优化,能很好地融入你的开发环境。
具体例子:
四、获取源码
从官方那获取源码到Linux主机
接着执行$ md5sum -c md5sum.txt来校验文件完整性
如果没有md5sum.txt,那就一个一个md5sum,再与官方/文档给的值进行对比
接着创建一个目录mywork
$ mkdir mywork
$ cat XXX.tar.gza* | tar -xz -C mywork
$ cd mywork/XXX_SDK
解压后的目录下有.git隐藏文件,使用以下命令从.git中恢复SDK源码,命令如下:
git reset --hard
补充:补丁获取及使用方法
打补丁的方法:使用git am命令将指定的patch合并到原始sdk中;如果存在冲突的情况,请使用编辑器打开patch文件对比修改
# 检查是否有冲突
git apply --check xxx.patch
# 打补丁
git am --whitespace=fix xxx.patch
五、Android_SDK编译环境的配置
推荐编译主机配置如下:
- Ubuntu22.04 操作系统64位
- 64 位 CPU
- 16GB 物理内存+交换内存
- 250GB 空闲的磁盘空间
开发环境搭建,请参考RKDocs\android\Rockchip_Android13_SDK_Developer_Guide_CN.pdf文档中的附录A编译开发环境搭建,安装OpenJDK 8和一些编译依赖软件,Ubuntu22.04通用软件安装包,命令如下:
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk
$ sudo apt-get install git gnupg flex bison gperf libsdl1.2-dev libesd-java \
squashfs-tools build-essential zip curl libncurses5 libncurses5-dev zlib1g-dev \
pngcrush schedtool libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib \
lib32z1-dev lib32ncurses-dev lib32readline-dev gcc-multilib libswitch-perl libssl-dev \
unzip zip device-tree-compiler liblz4-tool python2 python3-pyelftools -y
六、SDK编译
1、一键编译
一键编译就是把Uboot、Kernel和Android源码一次性地全部编译完,最终会生成一系列系统镜像文件(Image Files)。你可以把这些镜像理解为系统运行所需的各个“零件”和“整机”。用开发工具将它们“烧录”进开发板,板子就能启动并运行Android系统了
编译完成后,你会得到下面这些文件


这些镜像会生成在SDK根目录的 rockdev/Image-rk3562_t/ 文件夹下。而将它们打包成 update.img 整包的工具位于 RKTools/linux/Linux_Pack_Firmware/rockdev/ 路径下
一键编译步骤:
1、
source build/envsetup.sh
lunch rk3562_t-userdebug
source build/envsetup.sh:加载 Android 编译环境的脚本,定义一系列编译辅助函数(如 lunch、m、mm、mmm、croot 等)。执行后,你的终端会多出这些命令,方便编译和模块管理。

lunch rk3562_t-userdebug:选择编译目标(产品名称 + 构建类型)
rk3562_t:设备/产品名称,对应 device/rockchip/rk3562/ 下的配置。它告诉编译系统使用哪些源码、驱动、预编译库来生成适用于 RK3562 开发板的镜像。
userdebug:构建类型,介于 user(正式版)和 eng(工程版)之间。
开启 root 权限
包含调试工具(如 adb root)
日志输出较详细
适合开发和测试
| 命令 | 作用 |
|---|---|
| source build/envsetup.sh | 加载编译环境,引入 lunch 等函数 |
| lunch rk3562_t-userdebug | 指定编译设备为 rk3562_t,类型为 userdebug |
2、编译
./build.sh -UCKAu -d ido-evb3562-v1b-dsi-mipi -J6
这条命令是 瑞芯微 SDK 中提供的build.sh一键编译脚本,根据参数灵活地编译 Uboot、Kernel、Android 以及打包固件。
| 参数 | 含义 | 作用 |
|---|---|---|
-U | 编译 Uboot | 生成 uboot.img |
-C | 清理输出文件 | 清除之前的编译残留,确保干净编译(类似 make clean) |
-K | 编译 Kernel | 生成 boot.img(包含内核和设备树) |
-A | 编译 Android | 编译整个 Android 系统,生成 system.img、vendor.img 等 |
-u | 生成 update.img | 将所有镜像打包成一个完整的固件包(用于烧录) |
-d ido-evb3562-v1b-dsi-mipi | 指定设备配置文件 | 选择与你开发板匹配的配置(型号:ido-evb3562-v1b,屏幕:dsi-mipi) |
-J6 | 并行编译作业数 | 同时使用 6 个 CPU 核心进行编译,加快速度 |
-UCKAu 实际上就是 -U -C -K -A -u 的缩写,意思是:
清理 → 编译 Uboot → 编译 Kernel → 编译 Android → 打包成 update.img
因此,这条命令会 完整编译整个系统并生成可烧录的固件包
2、单独编译
首先还是一样,选择设备配置,为编译准备环境变量。
接着用./build.sh进行编译
2.1、uboot编译步骤
使用编译脚本编译
./build.sh -U
手动执行命令编译
cd u-boot
./make.sh rk3562
2.2、kernel编译步骤
单独编译kernel生成可直接烧录的boot.img
./build.sh -CK -d ido-evb3562-v1b-dsi-mipi -J6
此处的编译方法的前提已存在rockdev/Image-rk3562_t/boot.img文件(即Android代码已经完全编译过一次或者执行过build.sh -K)。编译的原理:在kernel目录下将编译生成的 kernel.img 和 resource.img 替换到旧的 boot.img 中,命令如下:
内核编译的配置阶段 :生成 .config
为 RK3562 平台 + Android 13 生成内核编译配置文件 .config
$ cd kernel-5.10
$ export PATH=../prebuilts/clang/host/linux-x86/clang-r450784d/bin:$PATH
$ alias msk='make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1'
$ msk ARCH=arm64 rockchip_defconfig android-13.config rk356x.config
编译并打包:boot.img
编译内核、设备树,然后打包成一个 完整的 boot.img(可烧录的启动镜像),并直接更新到 rockdev/Image-rk3562_t/boot.img
msk ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3562_t/boot.img ido-evb3562-v1b-dsi-mipi.img -j6
使用此方法编译出kernel-5.10/boot.img文件可以直接用于烧录至boot分区。
2.3、Android编译步骤
$ source build/envsetup.sh
$ lunch rk3562_t-userdebug
$ make -j8
会生成 Android 上层系统 的各种镜像文件
七、补丁
你改了一个文件(比如触摸屏的配置),想把这次修改保存成一个“修改说明书”,以后可以随时把这个“说明书”应用到代码上。这个“修改说明书”就是 补丁(patch)。

7.1、怎样生成一个补丁
7.1.1、用git diff(如果你在 git 管理下)
假设现在已经手动修改了文件 ido-evb3562-v1b-dsi-mipi.dts
git diff kernel-5.10/arch/arm64/boot/dts/rockchip/ido-evb3562-v1b-dsi-mipi.dts > my_fix.patch
然后这条命令会把你的修改输出到 my_fix.patch 文件里
7.1.2、手动创建一个文件
新建一个文本文件,把类似下面这样的内容粘进去,保存成 .patch 后缀:
--- a/kernel-5.10/arch/arm64/boot/dts/rockchip/ido-evb3562-v1b-dsi-mipi.dts
+++ b/kernel-5.10/arch/arm64/boot/dts/rockchip/ido-evb3562-v1b-dsi-mipi.dts
@@ -360,8 +360,8 @@
- // touchscreen-inverted-y;
- // touchscreen-swapped-x-y;
+ touchscreen-inverted-y;
+ touchscreen-swapped-x-y;
7.2、怎样应用这个补丁
进入你的 SDK 根目录(就是包含 kernel-5.10 文件夹的那个目录),然后执行:
patch -p1 < my_fix.patch
如果你用的是 Git 管理的仓库,也可以用 git apply:
git apply my_fix.patch
或者
# 检查是否有冲突
git apply --check xxx.patch
# 打补丁
git am --whitespace=fix xxx.patch
八、驱动开发
1、LOGO旋转
1.1、安装ImageMagick
sudo apt update
sudo apt install imagemagick
1.2、进入内核目录并旋转 LOGO
# 进入 kernel 目录
cd kernel-5.10
# 旋转 270 度(顺时针 270 = 逆时针 90)
convert logo.bmp -rotate 270 logo.bmp
convert logo_kernel.bmp -rotate 270 logo_kernel.bmp
1.3、验证是否成功
# 查看图片信息,确认尺寸已经交换(例如原本 1920x1080 变成 1080x1920)
identify logo.bmp
2、触摸旋转
2.1、创建补丁
在源码根目录创建一个补丁:
touch touch_rotate.patch
补丁的内容为:
--- a/kernel-5.10/arch/arm64/boot/dts/rockchip/ido-evb3562-v1b-dsi-mipi.dts
+++ b/kernel-5.10/arch/arm64/boot/dts/rockchip/ido-evb3562-v1b-dsi-mipi.dts
@@ -360,8 +360,8 @@ gt911@14 {
pinctrl-0 = <&touch_gpio>;
goodix_irq_gpio = <&gpio0 RK_PB6 IRQ_TYPE_LEVEL_LOW>;
goodix_rst_gpio = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
- // touchscreen-inverted-y;
- // touchscreen-swapped-x-y;
+ touchscreen-inverted-y;
+ touchscreen-swapped-x-y;
status = "okay";
};
};
最后应用补丁:
patch -p1 < touch_rotate.patch
2.2、手动改代码后生成补丁
先手动改代码
接着查看改动内容:git diff
接着生成补丁文件:
# 把所有未提交的改动生成一个补丁
git diff > my_logo_rotate.patch
# 或者只生成某个文件的补丁
git diff kernel-5.10/logo.bmp > logo_rotate.patch
最后应用补丁:git apply my_logo_rotate.patch
3、系统旋转
使用补丁:
--- a/device/rockchip/rk3562/BoardConfig.mk
+++ b/device/rockchip/rk3562/BoardConfig.mk
@@ -26,7 +26,7 @@ PRODUCT_KERNEL_CONFIG += rk356x.config
# used for fstab_generator, sdmmc controller address
PRODUCT_BOOT_DEVICE := ff870000.mmc
-SF_PRIMARY_DISPLAY_ORIENTATION := 0
+SF_PRIMARY_DISPLAY_ORIENTATION := 270
# Disable emulator for "make dist" until there is a 64-bit qemu kernel
BUILD_EMULATOR := false
最后应用完补丁之后记得:
source build/envsetup.sh
lunch rk3562_t-userdebug
./build.sh -CKAu -d ido-evb3562-v1b-dsi-mipi -J6

449

被折叠的 条评论
为什么被折叠?



