第 3 篇 保姆级手把手!RK 安卓驱动开发环境搭建(Ubuntu20.04 + 官方 SDK),踩坑全规避

目录

[开篇先定死 2 条红线(违反必踩坑,别头铁)](#开篇先定死 2 条红线(违反必踩坑,别头铁))

[一、第一步:虚拟机 + Ubuntu 系统安装,新手首选 VMware](#一、第一步:虚拟机 + Ubuntu 系统安装,新手首选 VMware)

[1. 必备软件下载(全免费,不用找破解版)](#1. 必备软件下载(全免费,不用找破解版))

[2. 虚拟机新建与配置,一步不落](#2. 虚拟机新建与配置,一步不落)

[3. Ubuntu 系统安装,避坑关键步骤](#3. Ubuntu 系统安装,避坑关键步骤)

[4. 系统基础配置,解决 90% 的后续问题](#4. 系统基础配置,解决 90% 的后续问题)

(1)更换国内软件源,下载速度拉满

[(2)安装 VMware Tools,实现文件共享 + 剪贴板互通](#(2)安装 VMware Tools,实现文件共享 + 剪贴板互通)

[二、第二步:安装编译必备依赖库,解决 99% 的编译报错](#二、第二步:安装编译必备依赖库,解决 99% 的编译报错)

给小白讲几个关键依赖的坑,别踩:

[三、第三步:RK SDK 获取、解压与目录校验](#三、第三步:RK SDK 获取、解压与目录校验)

[1. SDK 获取渠道(新手别瞎找)](#1. SDK 获取渠道(新手别瞎找))

[2. SDK 解压,新手必踩的天坑预警](#2. SDK 解压,新手必踩的天坑预警)

[3. SDK 目录回顾,重点目录再强调](#3. SDK 目录回顾,重点目录再强调)

[四、第四步:SDK 首次编译,完整步骤 + 报错全解决](#四、第四步:SDK 首次编译,完整步骤 + 报错全解决)

[1. 编译前的准备:选择开发板对应的编译配置](#1. 编译前的准备:选择开发板对应的编译配置)

[2. 一键全编译,执行命令](#2. 一键全编译,执行命令)

[3. 编译时长与注意事项](#3. 编译时长与注意事项)

[4. 编译成功校验](#4. 编译成功校验)

[五、新手编译常见报错,100% 解决方案汇总](#五、新手编译常见报错,100% 解决方案汇总)

结尾说两句


【本文首发于 CSDN,作者:黒漂技术佬,未经授权禁止转载】

大家好,我是黒漂技术佬。前两篇扫盲 + 前置知识补全之后,后台收到最多的哭诉就是:

"佬,我看懂了所有理论,结果卡在环境搭建上搞了一周,虚拟机装崩 3 次,SDK 编译报了几百个错,直接想放弃了"

我太懂这种痛苦了!当年我入门的时候,光环境搭建就踩了半个月的坑,网上的教程要么跳步跳得离谱,要么只给命令不讲为什么,报错了连排查方向都没有。

今天这篇,我就把 RK 安卓驱动开发的环境搭建,拆成保姆级的一步一步,所有新手必踩的坑提前标注,所有报错都给你现成的解决方案,只要你跟着走,100% 一次搭建成功,绝对不会再被环境劝退。


开篇先定死 2 条红线(违反必踩坑,别头铁)

  1. 系统版本必须用 Ubuntu 20.04 LTS,别追新用 22.04/24.04!瑞芯微官方 SDK 对高版本 Ubuntu 兼容性极差,依赖库、编译工具链全不匹配,90% 的编译报错都是因为你用了高版本系统,新手别头铁。
  2. 虚拟机配置必须达标:内存≥8G(推荐 16G)、硬盘≥200G(固态优先)、CPU 核心≥4 核(推荐 8 核)。别给 2 核 4G+50G 硬盘,编译到一半直接内存溢出、磁盘爆满,神仙都救不了。

一、第一步:虚拟机 + Ubuntu 系统安装,新手首选 VMware

很多新手会纠结 "虚拟机还是双系统?",这里给小白终极结论:入门阶段 100% 选 VMware 虚拟机

  • 虚拟机不用折腾硬盘分区,就算系统崩了,快照一键恢复,零风险;
  • 支持 Windows 和虚拟机剪贴板共享、文件拖拽,传文件、查资料极其方便;
  • 等你入门了,编译需求大了,再换双系统完全来得及,别上来就给自己加难度。

1. 必备软件下载(全免费,不用找破解版)

表格

软件 版本要求 下载渠道
VMware Workstation Player 17 及以上免费版 VMware 官网,个人非商业使用完全免费,不用找 Pro 破解版
Ubuntu 20.04.6 LTS 桌面版 64 位 清华大学开源镜像站(国内下载速度拉满,别去官网下,慢到离谱)

2. 虚拟机新建与配置,一步不落

  1. 打开 VMware Player,点击【创建新虚拟机】,选择【典型 (推荐)】,下一步;
  2. 选择【安装程序光盘镜像文件 (ISO)】,浏览选中你下载好的 Ubuntu 20.04 ISO 镜像,下一步;
  3. 填写全名、用户名、密码(密码一定要记牢,后面 sudo 全靠它),下一步;
  4. 给虚拟机命名,选择安装位置(必须装在固态盘里! 机械盘编译速度慢 10 倍),下一步;
  5. 重点配置磁盘 :指定磁盘容量≥200G,勾选【将虚拟磁盘存储为单个文件】,下一步; 小白避坑:别给 50G/100G!RK SDK 解压完就占 50G+,编译完能到 150G+,给少了编译到一半磁盘爆满,直接前功尽弃。
  6. 点击【自定义硬件】,做最后核心配置,这步直接决定你的编译速度:
    • 处理器:核心数≥4,推荐 8 核(你的 CPU 有多少线程,就给一半,别全给,Windows 会卡死);
    • 内存:≥8G,推荐 16G(同理,给你电脑总内存的一半);
    • 网络适配器:选【桥接模式】(后面开发板和虚拟机同网段,方便 ADB、NFS 调试);
    • 打印机、声卡:没用,直接移除,减少资源占用;
  7. 配置完成,点击【完成】,启动虚拟机,自动进入 Ubuntu 系统安装。

3. Ubuntu 系统安装,避坑关键步骤

  1. 启动后,语言选择【中文 (简体)】,点击【安装 Ubuntu】;
  2. 键盘布局选【汉语】,下一步;
  3. 网络连接:先断开!别联网! 联网会自动下载更新,安装速度慢 10 倍,装完系统我们再换源更新;
  4. 更新和其他软件:选【正常安装】,勾选【为图形或无线硬件... 安装第三方软件】,下一步;
  5. 安装类型:选【清除整个磁盘并安装 Ubuntu】,别手动分区!虚拟机里完全没必要,新手手动分区极易踩坑,下一步;
  6. 时区选【上海】,下一步;
  7. 等待安装完成,大概 10-20 分钟,安装完成后点击【现在重启】,输入密码进入系统。

4. 系统基础配置,解决 90% 的后续问题

(1)更换国内软件源,下载速度拉满

Ubuntu 默认的源是国外的,下载软件慢到离谱,先换成清华源,一步搞定:

  1. 右键桌面,点击【在终端打开】,输入以下命令,备份原来的源文件: bash

    运行

    复制代码
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  2. 输入密码,执行完成后,用 gedit 打开源文件: bash

    运行

    复制代码
    sudo gedit /etc/apt/sources.list
  3. 把文件里的所有内容全删掉,粘贴下面的清华源内容,保存关闭: bash

    运行

    复制代码
    # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
  4. 执行更新命令,让源生效: bash

    运行

    复制代码
    sudo apt update && sudo apt upgrade -y

    等待执行完成,你的 Ubuntu 下载速度直接拉满。

(2)安装 VMware Tools,实现文件共享 + 剪贴板互通

这步是新手必备,不然 Windows 和虚拟机之间传文件、复制代码能把你逼疯:

  1. 点击 VMware 顶部菜单栏【虚拟机】→【安装 VMware Tools】,虚拟机里会弹出一个光盘图标;

  2. 打开光盘,把里面的VMwareTools-xxx.tar.gz压缩包,复制到主目录下;

  3. 打开终端,执行解压命令(xxx 替换成你的版本号): bash

    运行

    复制代码
    tar -zxvf VMwareTools-xxx.tar.gz
    cd vmware-tools-distrib
    sudo ./vmware-install.pl
  4. 执行后,一路按回车默认即可,安装完成后重启虚拟机,就能实现 Windows 和虚拟机的剪贴板共享、文件拖拽了。


二、第二步:安装编译必备依赖库,解决 99% 的编译报错

很多新手 SDK 编译报错,99% 都是因为缺依赖库!这里我给大家整理了 RK3568/3588 安卓 SDK 编译全量依赖包,一行命令直接安装,不用一个一个找。

打开终端,直接复制下面的整段命令,执行即可:

bash

运行

复制代码
sudo apt install -y git ssh make gcc g++ gawk bison flex device-tree-compiler \
libncurses5-dev libssl-dev lib32z1 lib32ncurses5-dev lib32stdc++6 \
zip unzip curl wget python python2 python3 perl sed bc lzop gperf \
xsltproc docbook-utils fop libxml2-utils openjdk-11-jdk openssh-server \
samba nfs-kernel-server vim net-tools htop screen

给小白讲几个关键依赖的坑,别踩:

  1. 32 位依赖库必须装lib32z1lib32ncurses5-dev这些,RK 的编译工具链是 32 位的,64 位 Ubuntu 不装这些,编译直接报错,新手必踩;
  2. JDK 版本必须是 OpenJDK 11:安卓 11/12 编译必须用 JDK 11,别装 JDK 8/17,版本不对编译直接报错,上面的命令已经帮你装好了正确版本;
  3. 设备树编译器 dtc 必须装:后面修改设备树全靠它,提前装好省得后面报错。

安装完成后,执行下面的命令,校验 JDK 版本是否正确:

bash

运行

复制代码
java -version

输出里显示openjdk version "11.0.xxx",就说明没问题了。


三、第三步:RK SDK 获取、解压与目录校验

1. SDK 获取渠道(新手别瞎找)

  • 首选渠道:你买的 RK3568 开发板厂商,会给你适配好对应开发板的完整 SDK,不用自己从零适配板级配置,新手直接用这个,省 90% 的事;
  • 避坑提醒:别去网上随便下陌生人分享的 SDK,要么缺文件,要么适配的板子和你的不一样,编译出来烧进去直接变砖,就用你开发板厂商给的,最靠谱。

2. SDK 解压,新手必踩的天坑预警

**绝对不能在 Windows 里解压 SDK,再传到虚拟机里!**SDK 里有大量的 Linux 软链接文件,Windows 解压会直接破坏软链接,导致编译的时候找不到文件,报一堆奇奇怪怪的错,神仙都救不了。

正确的解压步骤,一步都不能错:

  1. 把 SDK 压缩包(一般是.tar.gz或者.7z格式),通过 VMware 共享文件夹,或者拖拽的方式,传到 Ubuntu 的主目录下;

  2. 打开终端,执行解压命令,根据你的压缩包格式选: bash

    运行

    复制代码
    #  tar.gz格式,最常用
    tar -zxvf RK3568_Android11_SDK.tar.gz
    
    # 7z格式,需要先装7z解压工具:sudo apt install p7zip-full
    7z x RK3568_Android11_SDK.7z
  3. 等待解压完成,大概 10-20 分钟,解压完成后,进入 SDK 目录,执行下面的命令,校验软链接是否正常: bash

    运行

    复制代码
    cd RK3568_Android11_SDK
    ls -l u-boot

    如果输出里显示u-boot -> u-boot-xxx,箭头指向正常,说明软链接没问题,解压成功;如果显示红色报错,说明解压坏了,重新按步骤解压。

3. SDK 目录回顾,重点目录再强调

解压完成后,再给小白强化一遍重点目录,后面 90% 的开发工作都在这几个目录里:

plaintext

复制代码
RK3568_Android11_SDK/
├── kernel/       # 【核心】Linux内核源码,我们的驱动、设备树全在这里
├── hardware/     # 【核心】安卓HAL层源码,驱动的上层适配全在这里
├── device/       # 【核心】开发板板级配置,编译配置、分区配置全在这里
├── u-boot/       # 系统启动引导源码,入门阶段不用改
├── out/          # 编译输出目录,编译好的镜像、固件全在这里
├── build.sh      # 【核心】瑞芯微官方一键编译脚本,后面全靠它
└── mkimage.sh    # 固件打包脚本

四、第四步:SDK 首次编译,完整步骤 + 报错全解决

终于到了最关键的编译环节,别慌,跟着我的步骤走,绝对不会出问题。

1. 编译前的准备:选择开发板对应的编译配置

瑞芯微 SDK 里集成了很多开发板的配置文件,我们必须先选中自己开发板对应的配置,不然编译出来的固件根本用不了。

  1. 进入 SDK 根目录: bash

    运行

    复制代码
    cd ~/RK3568_Android11_SDK
  2. 执行配置命令,加载开发板对应的配置文件: bash

    运行

    复制代码
    # 这里的xxx_defconfig,换成你开发板厂商给的配置文件名
    # 比如野火的RK3568开发板,就是 ./build.sh firefly_rk3568_defconfig
    ./build.sh 你的开发板配置文件名

    小白避坑:配置文件一定要用你开发板厂商给的,别用网上随便找的,不然编译出来的固件烧进去,屏幕不亮、外设用不了,甚至直接变砖。

  3. 执行完成后,终端输出configuration done,就说明配置成功了。

2. 一键全编译,执行命令

瑞芯微官方给我们写好了一键编译脚本build.sh,不用我们自己一点点编,一个命令搞定全编译:

bash

运行

复制代码
./build.sh -AUCKu

给小白讲清楚每个参数的意思,不用死记,知道干嘛的就行:

  • -A:编译完整的安卓系统
  • -U:编译 U-Boot
  • -C:编译 Linux 内核
  • -K:打包内核生成 boot.img
  • -u:打包所有镜像,生成完整的烧录固件 update.img

3. 编译时长与注意事项

  • 8 核 16G 内存的虚拟机,全编译时长大概 2-3 小时,4 核 8G 大概 4-6 小时,耐心等就行,别以为卡住了;
  • 编译过程中,别关终端、别休眠虚拟机、别乱改 SDK 里的文件,不然编译中断,只能重来;
  • 编译的时候,虚拟机内存占用会拉满,Windows 里别开大型软件,不然电脑直接卡死。

4. 编译成功校验

编译完成后,终端会输出#### make completed successfully ####,没有报错,就说明编译成功了!

执行下面的命令,查看生成的完整固件:

bash

运行

复制代码
ls -l rockdev/Image-xxx/update.img

能看到update.img文件,大小大概 1-2G,就说明我们的环境搭建、SDK 编译,100% 成功了!


五、新手编译常见报错,100% 解决方案汇总

我把新手编译最容易遇到的报错,全给你整理好了,遇到直接对着解决就行,不用到处搜。

表格

报错类型 核心原因 解决方案
内存不足,out of memory 虚拟机给的内存太小,编译链接阶段溢出 1. 给虚拟机加内存,至少 8G;2. 加 swap 交换分区,执行命令:sudo fallocate -l 16G /swapfile``sudo chmod 600 /swapfile``sudo mkswap /swapfile``sudo swapon /swapfile
磁盘空间不足,No space left on device 虚拟机硬盘给小了,编译满了 1. 先清理编译缓存:make clean;2. 关闭虚拟机,在 VMware 里扩容硬盘,然后在 Ubuntu 里用 gparted 工具扩容分区
权限报错,Permission denied 用 sudo 执行过编译,导致文件权限混乱 绝对不要用 sudo 编译整个 SDK!执行命令修复权限:sudo chown -R 你的用户名:你的用户名 ~/RK3568_Android11_SDK
找不到命令,command not found 缺依赖库 重新执行本文第二步的依赖安装命令,把所有依赖全装上
Java 版本不对,unsupported class file version JDK 版本不是 11 执行命令切换 JDK 版本:sudo update-alternatives --config java在弹出的列表里,选中 OpenJDK 11 对应的编号,回车
软链接失效,No such file or directory 在 Windows 里解压了 SDK,破坏了软链接 删掉原来的 SDK,重新在 Ubuntu 里解压压缩包,别在 Windows 里碰

结尾说两句

恭喜你!跟着这篇文章走到这里,你已经成功跨过了 RK 安卓驱动开发的最大拦路虎 ------ 环境搭建。

很多人入门就倒在这一步,而你已经完成了 SDK 的全编译,生成了可以烧录的完整固件,已经超过了 80% 刚入门的小白。

下一篇,我们直接进入实操的第二环节:搞定固件烧录 + 串口 + ADB 调试,手把手带你把编译好的固件烧进开发板,打通「编译 - 烧录 - 调试」的完整闭环,让你能实时看到内核日志、操作开发板系统,为后面写第一个驱动做好万全准备。

我是黒漂技术佬,关注我,带你零基础入门 RK 安卓驱动开发,不踩坑。有任何编译报错,评论区留言,我都会一一回复。

相关推荐
新缸中之脑2 小时前
使用 AI 进行科学调试
android·人工智能·kotlin
QING6183 小时前
Android Gradle Plugin 9.0 升级指南:告别十年技术债,你准备好了吗?
android·kotlin·gradle
Ehtan_Zheng3 小时前
内存泄漏检测:发现隐藏泄漏的工具
android
拭心3 小时前
Android 17 来了!新特性介绍与适配建议
android
Kapaseker4 小时前
一杯美式理解 Inner Class
android·kotlin
三少爷的鞋4 小时前
为什么 Google 不再推荐 SharedPreferences?答案其实只有一个:锁
android
JMchen1235 小时前
企业级图表组件库完整实现
android·java·经验分享·笔记·canvas·android-studio
草明13 小时前
android 蓝牙连接-兼容旧版本
android
鹏多多.13 小时前
Flutter使用screenshot进行截屏和截长图以及分享保存的全流程指南
android·前端·flutter·ios·前端框架