安卓编译重点记录

news/2025/9/25 16:02:34/文章来源:https://www.cnblogs.com/taosl/p/19111386

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.mzph.cn/news/917191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubelet源码阅读(二)——device plugin 的ListAndWatch过程

从kubelet运行到plugin注册过程 kubernetes-master/pkg/kubelet/kubelet.go1 func (kl *Kubelet) Run(updates <-chan kubetypes.PodUpdate) {2 // ...3 go wait.Until(kl.updateRuntimeUp, 5*time.Second,…

最新网站制作公司哪个好各大网站搜索引擎提交入口

同事电话询问Linux下一个集群内2个主机前后2天相继无响应&#xff0c;表现状况为ping都没响应。因为没任何监控或其他性能数据&#xff0c;故需要获取历史OS性能数据。我们知道rhel5,6下默认可以通过sar命令查看OS历史信息&#xff0c;故执行sar即可看到当天的数据。[rootora11…

网站上的充值链接怎么做的公众号开发者多次群发

《Windows Azure Platform 系列文章目录》 在Windows Azure平台中&#xff0c;用户最多可以对以个Role指定5个Endpoint。而一个Hosted Service最多允许包含5个Role,所以说在一个Hosted Service中用户最多能定义25个Endpoint。 而对于每一个Endpoint&#xff0c;使用者需要设定如…

CyberLink ColorDirector Ultra 2026 14.0.5712.0 视频后期调色

CyberLink ColorDirector 是由中国台湾讯连科技(CyberLink)开发的专业创意视频后期着色软件,核心目标是帮助用户高效改进并增强视频色彩表现。无论是基础的颜色校正、色调调整,还是进阶的视频动态对象局部色彩优化…

CF 1053 Div.2

E. Limited Edition Shop 经过一些简单转化,要解决的是如下问题:二维平面上有 \(n\) 个点,点有点权。\(n\) 个点横坐标、纵坐标都是 \(1\sim n\) 的排列。要求选择若干点,满足它们右下角区域的并集中的点点权和最大…

haproxy负载均衡 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

​​[硬件电路-320]:模拟电路与数字电路,两者均使用晶体管(如BJT、MOSFET),但模拟电路利用其线性区,数字电路利用其开关特性。 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

现在网站开发用什么语言seo快速排名分析

第1题功能&#xff1a;将十进制数转换成十六进制数。第2题功能&#xff1a;删除字符串中的指定字符&#xff0c;字符串和要删除的字符均由键盘输入。第3题功能&#xff1a;以下程序是用选择法对10个整数按升序排序。第4题功能&#xff1a;以下程序的功能如(图1)。第5题功能&…

豆油

8250上下10块钱做空 目标新低7900附近

源码安装fail2ban

源码安装fail2ban碎碎念: 这几天早上都比较凉爽,甚至有一丝凉意,到了中午下午太阳出来,还有些许燥热。下班后,抬头只见蓝天白云,天上的云朵像棉花糖一样铺了几朵,余晖落在身上,有种温暖舒适的感觉,这一刻尽情…

高效 PDF 处理利器:PDF-XChange Editor v10.7.3.401 特性解析与优化版分享

高效 PDF 处理利器:PDF-XChange Editor v10.7.3.401 特性解析与优化版分享2025-09-25 15:49 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x:…

类的继承与继承的覆盖

# 继承 class F:def __init__(self):self.info = "hello Father"def fun1(self):return self.infoclass S(F):passf = F() s = S()print(f.fun1()) # hello Father print(s.fun1()) # hello Father# 继承的…

内网网站建设所需硬件设备wordpress上的php技术

**单片机设计介绍&#xff0c;1653基于STM32的多功能智能密码锁控制设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序文档 六、 文章目录 一 概要 基于STM32的多功能智能密码锁控制设计是一种用STM32微控制器开发的系统&#xff0c;用于控制和管理密码…

linux shell awk 中括号 方括号 分割 []

分隔符:-F[][] 示例如下:[root@localhost test]# echo 1111[3333]55555[7777]9999 | awk -F[][] {print $1,$2,$3,$4,$5} 1111 3333 55555 7777 9999

springboot配置文件关系及加载顺序

1. 配置文件的作用 application.yml作用:这是项目的 默认配置文件,通常包含通用的基础配置。它适用于所有环境(如开发、测试、生产等),提供全局的默认值。application-prod.yml作用:这是一个 环境特定的配置文件,…

绩效面谈中的优质提问(一)

好的绩效面谈需要上级和下属之间进行良好的对话。双方都有重要的信息要提供给对方,优秀的绩效面谈的问题与收集他们的反馈一样重要。这些员工绩效面谈问题可用于获取有关员工工作方式、与其评估相关的特定事件以及员工…

简单博弈

巴什博弈问题:\(2\) 人玩游戏,共有 \(n\) 个石子,每人每次可以取 \([1,k]\) 个石子,最后一次取石子的人获胜,问先手何时必胜?结论:巴什博弈先手必败,当且仅当 \((k+1)\mid n\),否则先手必胜。 证明:分类讨论…

PolarFire SOC Auto Update 和 IAP 文档阅读一 AUTO recovery

PolarFire SOC Auto Update 和 IAP 文档阅读一 AUTO recovery 文档来自:PolarFire FPGA and PolarFire SoC FPGA Programming User GuidePolarFire SOC Auto Update 和 IAP 文档阅读一 - 所长 - 博客园 PolarFire SO…

网站建设及seo黄骅港项目中标结果

背景 最近面对一个庞大的项目&#xff0c;但是只需要修改某个模块&#xff0c;每次都手搓命令太麻烦了&#xff0c;于是就想着能不能写个脚本来辅助处理这些事情。 解决方案 定制化一键 ESLint&#xff0c;执行文件下载地址&#xff1a; https://github.com/mazeyqian/go-g…

从 “纸笔清单” 到全栈引擎:数据填报与类 Excel 控件如何重塑企业效率曲线 - 详解

从 “纸笔清单” 到全栈引擎:数据填报与类 Excel 控件如何重塑企业效率曲线 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fo…