当前位置: 首页 > 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.hskmm.com/?act=detail&tid=17046

相关文章:

  • kubelet源码阅读(二)——device plugin 的ListAndWatch过程
  • CyberLink ColorDirector Ultra 2026 14.0.5712.0 视频后期调色
  • CF 1053 Div.2
  • vi编辑器
  • 豆油
  • MQTT
  • 源码安装fail2ban
  • 类的继承与继承的覆盖
  • linux shell awk 中括号 方括号 分割 []
  • springboot配置文件关系及加载顺序
  • 绩效面谈中的优质提问(一)
  • 简单博弈
  • 从 “纸笔清单” 到全栈引擎:数据填报与类 Excel 控件如何重塑企业效率曲线 - 详解
  • 触摸IC原厂 VKD223EB是一款低电流1通道触控1按键触摸芯片 HBM静电大于5KV
  • 09_五大IO模型
  • wsl Ubuntu 使用cmake
  • 做题笔记总板
  • day 4
  • AI元人文思想体系:从哲学基础到价值原语博弈的微观机制
  • 做题笔记16
  • 条件判断语句
  • EXCEL 行列转换
  • 做题笔记6
  • 第17章 Day20-Day21 逆向爬虫之瑞数6
  • 基于多假设跟踪(MHT)算法的MATLAB实现
  • ROS2之消息接口
  • Linux grep cut tomcat logs
  • Vona ORM分表全攻略
  • 如何在预算与风险之间做选择 iOS 混淆(源码混淆 vs IPA 混淆)的成本-收益分析与实战决策框架
  • 【兰州大学主办|EI稳定检索】第二届信息光学与光电技术国际学术会议(CIOT 2025)