适用场景 :在 Windows 主机上通过 VMware/VirtualBox 安装 Ubuntu 虚拟机,用于编译 OK3568 平台的 Android 11 源码。
关键词:Android 源码编译、Ubuntu 虚拟机、分卷合并、swap 虚拟内存、VMware 复制粘贴、编译依赖库
一、开启虚拟机双向复制粘贴(Windows ↔ Ubuntu)
为了方便在 Windows 和 Ubuntu 虚拟机之间复制命令、路径或日志,建议开启双向剪贴板共享。
VMware 用户:
登陆VMware官网https://www.vmware.com/cn.html下载Workstation Pro并获取产品密匙。VMware是付费软件,需要自行购买,或者使用VMware提供的试用版本。
VMware环境搭建:
https://cloud.tencent.com/developer/article/2157601
-
启动 Ubuntu 虚拟机。
-
点击顶部菜单栏:虚拟机 → 安装 VMware Tools。
-
在 Ubuntu 中安装 Open VM Tools:
sudo apt update sudo apt install open-vm-tools-desktop -
重启虚拟机:
sudo reboot -
重启后即可实现 Windows 与 Ubuntu 之间的双向复制粘贴。
VirtualBox 用户:
下载地址:https://www.virtualbox.org/wiki/Downloads
VirtualBox编译环境搭建:https://wiki.lckfb.com/zh-hans/tspi-rk3566/sdk-compilation/virtualBox-ubuntu-compiling-environment.html
sudo apt update
sudo apt install virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
sudo reboot
并在 VirtualBox 设置中启用"双向剪贴板"。
ubuntu虚拟机:
我们选择安装的Ubuntu 版本是18.04,首先去Ubuntu官网获取Ubuntu18.04 64位镜像,下载地址为:http://sources.ubuntu.com/18.04/下载"ubuntu-18.04.6-desktop-amd64.iso"这个版本。

二、安装编译所需的基础依赖库
⚠️ 以下操作需确保 Ubuntu 能正常访问外网(可
ping www.baidu.com测试)。
2.1 安装通用开发基础库(3.1.6 节)
这些是 Linux 下进行 C/C++ 编译、压缩解压、网络调试等常用工具:
sudo apt-get update
sudo apt-get install build-essential # 提供 gcc/g++/make 等核心编译工具
sudo apt-get install libncurses* # 用于 menuconfig 等文本界面
sudo apt-get install lzop # LZO 压缩工具(内核常用)
sudo apt-get install net-tools # 包含 ifconfig、netstat 等网络工具
2.2 安装 OK3568 Android 编译专用依赖库(3.1.7 节)
这是针对 Rockchip OK3568 平台 Android 11 源码编译所需的完整依赖包集合:
sudo apt-get update
# 基础工具
sudo apt-get install openssh-server vim git fakeroot
# 核心编译依赖(一行命令,避免遗漏)
sudo apt-get install repo git ssh make gcc libssl-dev liblz4-tool expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler python-pip libncurses5-dev
# Java 环境(Android 11 通常使用 OpenJDK 8)
sudo apt-get install openjdk-8-jdk
# AOSP 官方推荐依赖(兼容 32/64 位交叉编译)
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
# 特定版本 C 库(部分厂商脚本强依赖)
sudo apt-get install g++-7-multilib libc6=2.27-3ubuntu1.6 libc6-i386 libc6-dev
✅ 说明:
- 若提示
libc6版本冲突,可先运行apt policy libc6查看当前版本,或联系厂商确认是否必须锁定该版本。- 部分包(如
g++-7-multilib)在较新 Ubuntu(如 22.04+)中可能需添加旧版仓库,建议使用 Ubuntu 18.04 或 20.04 以获得最佳兼容性。
三、导入并合并 Android 源码分卷
厂商常将源码拆分为多个 .tar.bz2.* 分卷文件。
步骤如下:
-
确保所有分卷在同一目录下
例如:
OK3568-android11-source.tar.bz2.001 OK3568-android11-source.tar.bz2.002 ... -
合并分卷
cat OK3568-android11-source.tar.bz2.* > OK3568-android11-source.tar.bz2 -
解压
tar -xjvf OK3568-android11-source.tar.bz2
四、配置虚拟内存(Swap)防止编译中断
Android 编译内存消耗极大,强烈建议物理内存 ≥16GB。若不足,请扩展 swap:
sudo swapoff /swapfile
sudo rm /swapfile
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
验证:
free -h # 查看 Swap 是否显示 ~16G
五、开始编译 Android 源码
进入源码根目录,执行:
进入源码目录:cd ~/forlinx/OK3568-Android11-Source
删除旧的输出目录:rm -rf out/
加载环境变量脚本:source build/envsetup.sh
选择编译目标:lunch rk3568_r-userdebug
如果你看到 lunch 提示找不到 rk3568_r-userdebug,说明你的源码中没有这个产品配置,请检查是否下载完整或是否拼写错误。
开始编译:./build.sh -A -J 2
-A:编译完整 Android 系统(All)。-J 2:使用 2 个线程编译(根据 CPU 核心数调整,避免系统卡死)。
🔔 首次编译耗时较长(2~8 小时),请保持电源和网络稳定。
六、常见问题排查
| 问题 | 解决方案 |
|---|---|
build.sh: Permission denied |
运行 chmod +x build.sh |
repo: command not found |
确保已安装 repo,并配置 PATH |
| 编译中途卡死/系统无响应 | 检查内存和 swap,减少 -J 线程数 |
openjdk-8-jdk 找不到 |
Ubuntu 22.04+ 需手动添加旧版仓库或使用 Adoptium |
七、结语
本文从虚拟机配置、依赖安装、源码处理到最终编译,提供了一套完整的 OK3568 Android 11 源码编译流程。虽然在虚拟机中编译效率较低,但对于学习 Android 系统架构、驱动开发或固件定制非常有价值。
📌 建议:生产级开发请使用物理机(32GB+ 内存,SSD 硬盘),可大幅提升编译速度。