当前位置: 首页 > news >正文

安卓编译重点记录

Ubuntu18.04编译安卓11详细步骤

在 Ubuntu 18.04 上编译 Android 11 的详细步骤
以下是为 ​Ubuntu 18.04 环境编译 ​Android 11(AOSP)​ 的完整指南,涵盖环境配置、源码下载、编译及常见问题解决。

​1. 系统要求
​操作系统:Ubuntu 18.04 LTS(64位)
​内存:至少 ​16GB RAM​(推荐 32GB)
​硬盘空间:至少 ​300GB 可用空间​(SSD 更优)
​网络:稳定高速连接(源码下载约需 50GB+)
​2. 安装依赖工具

更新系统并安装基础工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

安装 Python 3.6+ 和 JDK 8(Android 11 要求)
sudo apt install -y python3 openjdk-8-jdk
sudo update-alternatives --config java # 选择 Java 8
​3. 配置环境变量
编辑 ~/.bashrc 或 ~/.zshrc:

添加以下内容
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=JAVAHOME/bin:JAVA_HOME/bin:JAVA
H

OME/bin:PATH
export USE_CCACHE=1
export CCACHE_DIR=/path/to/ccache # 建议设置为大容量分区路径
export CCACHE_SIZE=50G # 设置缓存大小
应用配置:

source ~/.bashrc
ccache -M 50G # 初始化 ccache
​4. 安装 Repo 工具

创建 bin 目录并添加到 PATH
mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH # 临时生效,如需永久生效需写入 .bashrc
​5. 下载 Android 11 源码

创建源码目录
mkdir ~/aosp && cd ~/aosp

初始化仓库(指定 Android 11 分支)
repo init -u https://android.googlesource.com/platform/manifest -b android-11.0.0_r48

同步源码(耗时较长,建议使用 -j4 或更高并发数)
repo sync -j4 --force-sync --no-tags --no-clone-bundle
注意:

若网络不稳定,可使用国内镜像(如清华源)替换 https://android.googlesource.com。
若中断后可运行 repo sync --fail-fast 继续。
​6. 准备编译环境

加载编译环境变量
source build/envsetup.sh

选择目标设备(以通用 aosp_arm64-eng 为例)
lunch aosp_arm64-eng # 输入对应编号后回车
​7. 开始编译

启动编译(使用 -jN 指定并行任务数,N 通常为 CPU 核心数 × 2)
m -j$(nproc --all)
编译成功标志:

输出 #### build completed successfully ####。
生成的镜像文件位于 out/target/product/generic_arm64/。
​8. 运行编译后的镜像

启动模拟器(需提前安装模拟器工具)
emulator
或直接刷入支持的设备(如 Pixel 系列):

adb reboot bootloader
fastboot flashall -w
​常见问题解决
​1. 内存不足导致编译失败
​症状:java.lang.OutOfMemoryError 或 GC overhead limit exceeded
​解决:
export JACK_SERVER_VM_ARGUMENTS=“-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g”
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
​2. Python 版本冲突
​症状:Unsupported Python version 3.x
​解决:强制使用 Python 3.6+:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
​3. 源码同步失败
​症状:error: Exited sync due to fetch errors
​解决:
repo sync --force-sync --no-clone-bundle # 重试

或更换镜像源
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r48
​4. 缺少依赖库
​症状:error: missing libfoo.so
​解决:安装对应依赖:
sudo apt install -y libssl-dev libxml2-dev
​高级操作
​1. 模块化编译
仅编译特定模块(如 Settings):

mmm packages/apps/Settings
​2. 生成 OTA 升级包
bash
make otapackage -j$(nproc --all)
​3. 清理编译产物
make clobber # 完全清理
make clean # 部分清理
​参考资源
​官方文档:AOSP Build Instructions
​镜像加速:清华 AOSP 镜像使用帮助
————————————————
版权声明:本文为CSDN博主「tslxs」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tslxs/article/details/146422884

http://www.gsyq.cn/news/11642.html

相关文章:

  • springboot配置文件关系及加载顺序
  • 简单博弈
  • PolarFire SOC Auto Update 和 IAP 文档阅读一 AUTO recovery
  • 09_五大IO模型
  • wsl Ubuntu 使用cmake
  • 做题笔记16
  • 深入解析:实验室:将 XSS 反映到 HTML 上下文中,大多数标记和属性都被阻止
  • 深入解析:【Qt】信号和槽
  • ROS2之消息接口
  • 【IEEE出版】第五届网络通信与信息安全国际学术会议(ICNCIS 2025)
  • 第16章 Day19 Charles安装和使用---微信小程序逆向
  • DBLINK的创建和使用(总结)
  • Could not resolve host: mirrorlist.centos.org
  • 华为,让金融智能体月映千江 - 指南
  • 课上测试:C编程工具测试(AI)
  • 标题。
  • 中断的基本概念
  • 修复gradle8使用Transform第一个构建中断第二次构建失败的问题:java.io.IOException: Unable to delete directory xxxx\build
  • 记录:git、.${index}. 滚动条
  • CRMEB标准版PHP移动订单功能深度解析:多端同步方案
  • Tenable Nessus 10.10 (macOS, Linux, Windows) - 漏洞评估解决方案
  • 超快轻量级离线翻译服务器MTranServer在腾讯云轻量应用服务器上的全流程部署指南 - 实践
  • 实用指南:【Cesium 开发实战教程】第六篇:三维模型高级交互:点击查询、材质修改与动画控制
  • MX 练石 2025 NOIP #9
  • OSS cp(下载文件)
  • 有范同城旅游广告小程序系统:赋能旅游行业数字化运营新生态
  • 完整教程:第八篇:GIL全局解释器锁:原理、影响与应对策略
  • 下载并安装ossutil
  • PDF论文文字公式提取,翻译与对照代码(自用)
  • 华为鸿蒙 ArkTS 实战:基于 RelationalStore 的 SQLite 实现本地数据持久化 - 实践