Ubuntu20.04下编译Android系统源码

本文档详细介绍了如何在Ubuntu20.04环境下搭建Android8.1.0_r81版本的编译环境,包括必备工具安装、Git配置、源码下载与同步、JDK安装、编译前设置、目标选择与编译、常见问题解决方法以及模拟器运行等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

宿主系统:Ubuntu 20.04
源码版本:Android8最新版 android-8.1.0_r81

1.工具安装:git、curl及编译工具

sudo apt install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libncurses5 libxml2-utils python xsltproc unzip

2.git用户设置

git config --global user.name xxx
git config --global user.email xxx@qq.com

3.下载repo工具

git clone https://aosp.tuna.tsinghua.edu.cn/git-repo/
chmod a+x git-repo/repo
export PATH=~/git-repo:$PATH // 每次打开终端需要设置

修改repo文件中的 REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo’

4.同步manifest查看branches

创建文件夹存放源码:
mkdir AndroidSource
移动到该目录:
cd AndroidSource

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

查看所有分支版本:
cd .repo/manifests.git/
git branch -a

5.同步分支

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.1.0_r81
repo sync -c -j8 # j8表示8个线程进行下载

6.安装jdk

sudo apt-get install openjdk-8-jdk
sudo apt-get install openjdk-8-jre

7.编译前设置

Set ccache

prebuilts/misc/linux-x86/ccache/ccache -M 50G

Clean out directory

make clobber

Jack server configuration

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx6g"
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server

Setup environment

source build/envsetup.sh

Jack Server安装问题:提示Jack server installation not found
cd prebuilts/sdk/tools/
./jack-admin install-server jack-launcher.jar jack-server-4.11.ALPHA.jar
// ls查看版本,不一定是4.11。
安装完成后,会在用户目录生成文件夹 .jack-server 和文件 .jack-settings
####################

8.选择target、准备编译环境

Select device target

lunch aosp_arm64-eng

Build sources (cofee time)

make -j8

九、编译过程问题

1.Assertion cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
在Ubuntu18上使用交叉编译工具,报这个错。研究之下发现,工具的绝对路径过长,ubuntu18对其优化,修改路径,导致报错。
sol:使用命令:export LC_ALL=C

10.运行模拟器

编译完成后可直接运行:
emulator

之后运行时需要重新设置环境:
source build/envsetup.sh
lunch aosp_arm64-eng #选择刚才你设置的目标版本
emulator

### 编译安装 GStreamer 的准备工作 为了在 Ubuntu 20.04编译并安装 GStreamer,需要先确保系统已经更新到最新状态,并安装必要的构建工具和依赖项。这可以通过运行以下命令来完成: ```bash sudo apt update && sudo apt upgrade -y ``` 接着,按照提供的信息,可以安装一系列用于开发环境的基础包[^3]。 ### 安装依赖项 对于编译 GStreamer 所需的依赖项,建议通过 APT 包管理器一次性全部安装到位。这些依赖不仅涵盖了基本的 C/C++ 开发工具链,还包括多媒体处理所需的库文件和其他辅助组件。具体来说,应该执行如下指令: ```bash sudo apt install build-essential cmake git pkg-config \ libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev \ libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev libpng-dev \ libtiff-dev gfortran openexr libatlas-base-dev python3-dev \ python3-numpy libtbb2 libtbb-dev libdc1394-22-dev \ libopenexr-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev ``` 上述操作完成后,系统的软件仓库中已有的 GStreamer 及其插件会被自动拉取下来,为后续的手动编译做好准备。 ### 下载源代码 获取最新的 GStreamer 源码有两种方式:一是直接从官方 GitLab 页面克隆整个项目;二是下载特定版本的压缩包。这里推荐采用前者的方式来进行最前沿的功能测试或定制化修改。使用 `git` 命令行客户端可以从远程服务器复制一份完整的副本至本地机器上: ```bash git clone https://gitlab.freedesktop.org/gstreamer/gst-build.git cd gst-build/ ``` 此过程可能耗时较长,取决于网络状况和个人计算机性能等因素影响[^4]。 ### 配置与编译选项 进入工作目录之后,利用 Meson 构建系统初始化一个新的构建环境。Meson 是一种现代化的跨平台构建工具,能够简化复杂的多阶段编译流程。创建一个名为 "build" 的子文件夹作为输出路径,并指定目标架构及其他参数(如果有必要的话)。例如: ```bash meson setup build --prefix=/usr/local -Dgst_plugins_bad=enabled -Dgst_plugins_ugly=enabled ``` 这里的 `-Dgst_plugins_*` 参数允许启用额外功能模块的支持,可以根据实际需求调整设置值。更多可用选项可通过查阅文档获得指导。 ### 进行编译 一旦完成了前期的各项准备工作,则可正式开启编译环节。切换回刚刚建立好的 “build” 文件夹内,调用 Ninja 工具启动任务进程。默认情况下会尽可能多地占用 CPU 资源加速运算速度,因此不必担心效率问题: ```bash ninja -C build ``` 等待一段时间直至终端提示已完成所有步骤为止。期间可能会遇到各种警告信息,只要不影响最终产物的质量便无需过分担忧。 ### 安装成果 最后一步就是把新生成的对象文件部署到合适的位置上去供其他应用程序访问调用了。同样借助于 Ninja 提供的帮助函数实现这一目的,只需简单输入一句命令即可达成所愿: ```bash sudo ninja -C build install ``` 至此,在 Ubuntu 20.04 平台上手动编译安装 GStreamer 插件的工作就大功告成了。当然,这只是入门级的操作指南,更深入的学习还需要不断探索实践才行。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值