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

保姆级教程:在Ubuntu 24.04上搞定AOSP源码下载与编译(附国内镜像加速)

零基础玩转AOSP:Ubuntu 24.04环境下的源码编译实战指南

1. 环境准备与系统配置

在开始AOSP源码编译之前,确保你的Ubuntu 24.04系统满足以下硬件要求:

  • 存储空间:至少250GB可用空间(源码下载约80GB,编译后占用更多)
  • 内存:16GB以上(推荐32GB以获得更好体验)
  • CPU:6核以上处理器(编译过程非常消耗CPU资源)

对于国内开发者,建议使用清华大学的Ubuntu镜像源进行系统更新:

sudo sed -i 's|http://.*archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list sudo apt update && sudo apt upgrade -y

安装基础依赖工具链:

sudo apt install -y git-core gnupg flex bison build-essential \ zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \ libncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev \ libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

提示:如果使用虚拟机环境,建议分配至少8核CPU和32GB内存,并启用KVM加速以获得更好的编译性能。

2. 开发工具链配置

2.1 Java环境安装

AOSP不同版本需要特定Java开发工具包:

AOSP版本JDK版本安装命令
Android 7-8OpenJDK 8sudo apt install openjdk-8-jdk
Android 9+OpenJDK 11sudo apt install openjdk-11-jdk

设置默认JDK版本:

sudo update-alternatives --config java sudo update-alternatives --config javac

2.2 Git配置

正确配置Git信息对代码提交至关重要:

git config --global user.name "YourName" git config --global user.email "your.email@example.com" git config --global color.ui auto

2.3 Repo工具安装

Repo是管理多个Git仓库的工具,国内建议使用清华镜像:

mkdir ~/bin curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo chmod a+x ~/bin/repo

将以下内容添加到~/.bashrc文件末尾:

export PATH=~/bin:$PATH export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

使配置立即生效:

source ~/.bashrc

3. 源码下载与同步

3.1 初始化仓库

创建工作目录并初始化仓库:

mkdir ~/aosp && cd ~/aosp repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-14.0.0_r2

常用分支版本对照表:

Android版本分支名称API级别
Android 14android-14.0.0_r234
Android 13android-13.0.0_r333
Android 12android-12.1.0_r532

3.2 同步源码

使用以下命令开始同步源码:

repo sync -j8 --current-branch --no-tags

遇到网络中断时,可以恢复同步:

repo sync -j8 --fail-fast

注意:同步过程可能需要数小时,建议在稳定的网络环境下进行,可以使用screentmux保持会话。

4. 编译环境准备

4.1 环境变量设置

加载编译环境脚本:

source build/envsetup.sh

4.2 选择编译目标

查看可用设备列表:

lunch

常见编译目标说明:

  • aosp_arm-eng:ARM架构模拟器,带调试功能
  • aosp_x86_64-eng:x86_64架构模拟器,带调试功能
  • aosp_car_x86_64-userdebug:车载系统x86_64架构,用户调试版本

选择目标:

lunch aosp_x86_64-eng

5. 开始编译系统

5.1 全系统编译

使用make命令开始编译:

make -j$(nproc)

编译过程监控技巧:

  1. 查看CPU使用率:htop
  2. 监控磁盘空间:df -h
  3. 查看编译进度:tail -f out/verbose.log.gz

5.2 常见编译问题解决

  • 内存不足:添加交换分区

    sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
  • Java版本冲突:确保使用正确的JDK版本

  • 依赖缺失:根据错误提示安装缺失的软件包

6. 运行编译结果

6.1 启动模拟器

编译完成后直接启动:

emulator

自定义启动参数:

emulator -no-snapshot -no-audio -no-window -gpu off -memory 4096

6.2 刷入实体设备

将系统镜像刷入支持解锁的Pixel设备:

fastboot flashall -w

7. 模块化开发技巧

7.1 单独编译模块

常用模块编译命令:

命令功能描述
mm编译当前目录模块
mma编译当前目录及依赖模块
mmma dir编译指定目录下的模块
m libart编译特定模块(如libart)

7.2 常见模块编译示例

编译Framework资源:

make framework-res

编译SystemUI:

make SystemUI

编译Settings应用:

make Settings

8. 开发调试技巧

8.1 ADB调试

常用ADB命令:

adb logcat -v threadtime # 查看详细日志 adb shell dumpsys package <package> # 查看包信息 adb shell am start -n <activity> # 启动Activity

8.2 系统属性修改

临时修改属性:

adb shell setprop <key> <value>

永久修改需要修改build.prop并重新编译系统。

8.3 性能分析工具

  • systrace:系统级性能分析

    python systrace.py -o mytrace.html sched freq idle am wm gfx view
  • perfetto:新一代性能分析工具

    adb shell perfetto --txt -c /data/misc/perfetto-configs/battery_config.pbtxt -o /data/misc/perfetto-traces/battery_trace

9. 进阶开发指南

9.1 自定义系统组件

添加新系统服务步骤:

  1. 创建服务Java接口(frameworks/base/core/java/android/app/IMyService.aidl
  2. 实现服务(frameworks/base/services/core/java/com/android/server/MyService.java
  3. 注册服务(修改SystemServer.java
  4. 添加权限(frameworks/base/core/res/AndroidManifest.xml

9.2 内核开发

下载对应内核源码:

git clone https://aosp.tuna.tsinghua.edu.cn/kernel/common.git

编译内核:

make -C kernel/msm-3.18 O=out ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- menuconfig make -C kernel/msm-3.18 O=out ARCH=arm64 CROSS_COMPILE=aarch64-linux-android-

9.3 SELinux策略修改

调试SELinux策略:

adb shell dmesg | grep avc # 查看SELinux拒绝日志 adb shell su root cat /sys/fs/selinux/policy > sepolicy # 导出策略

添加新策略:

audit2allow -i avc_log.txt > mypolicy.te

10. 持续集成与自动化

10.1 增量编译优化

启用ccache加速后续编译:

export USE_CCACHE=1 export CCACHE_DIR=/path/to/ccache prebuilts/misc/linux-x86/ccache/ccache -M 50G

10.2 自动化构建脚本

示例构建脚本:

#!/bin/bash # 初始化环境 source build/envsetup.sh # 选择目标 lunch aosp_x86_64-eng # 清理旧构建 make clobber # 开始构建 START_TIME=$SECONDS make -j$(nproc) 2>&1 | tee build.log ELAPSED_TIME=$(($SECONDS - $START_TIME)) echo "构建完成,耗时: $(($ELAPSED_TIME/60))分$(($ELAPSED_TIME%60))秒"

10.3 容器化构建环境

使用Docker创建可移植的构建环境:

FROM ubuntu:24.04 RUN apt update && apt install -y git-core gnupg flex bison build-essential \ zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \ libncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev \ libgl1-mesa-dev libxml2-utils xsltproc unzip python3 RUN useradd -m builder USER builder WORKDIR /home/builder
http://www.jsqmd.com/news/702822/

相关文章:

  • BetterNCM Installer:网易云音乐插件一键安装管理神器
  • 2026年食品杀菌锅厂家优选指南|东科特种设备(诸城)_高温/蒸汽/双层/立式杀菌锅适配推荐 - 海棠依旧大
  • Honey Select 2游戏增强补丁终极指南:从语言障碍到创作自由的一站式解决方案
  • 2025终极指南:3个专业方案彻底解决Tiled符号链接路径问题
  • 微信自动化终极指南:用wxauto构建高效消息处理系统
  • 终极罗技鼠标宏压枪教程:3步掌握绝地求生精准射击
  • 深度探索Testsigma:重新定义AI驱动的自动化测试平台
  • 基于astron-agent框架构建智能体:从模块化设计到生产部署实战
  • python进阶——继承和多继承
  • k折交叉验证配置与k值选择实战指南
  • PDPS布局效率翻倍秘籍:巧用‘镜像对象’快速构建对称工作站(以Process Simulate为例)
  • 如何在Chrome浏览器中一键转换图片格式:Save Image as Type终极指南
  • OpenFace完整指南:5分钟掌握面部行为分析核心技术
  • 别再为GAN训练不稳定发愁了!用PyTorch手把手实现WGAN-GP(含梯度惩罚代码)
  • Ubuntu虚拟机重启后网络消失?手把手教你用nmcli和NetworkManager永久修复网卡不显示问题
  • 我用 SpriteKit 给存钱罐加了物理引擎——聚沙攒钱 iOS 开发记录
  • 七段数码管显示数字0-9:从硬件原理到Verilog代码的保姆级解析
  • 2026年杀菌锅厂家口碑推荐:诸城市轩润机械(食品/蒸汽/喷淋式/水浴式杀菌锅)及同行参考 - 海棠依旧大
  • 手把手教你用树莓派搭建PTP时间服务器,给实验室设备做精准时钟同步
  • 如何快速掌握HS2-HF_Patch:面向新手的完整汉化增强指南
  • WindowResizer终极指南:如何强制调整任意窗口大小
  • 如何快速掌握英雄联盟LCU工具:3大核心功能完全指南
  • 像素语言·维度裂变器:5分钟上手,让普通文案变出10种创意
  • 终极解决方案:如何快速修复Windows系统依赖问题:Visual C++运行库一键安装指南
  • 终极解决方案:一次性修复Windows所有VC++运行库依赖问题
  • WindowResizer:彻底解放你的Windows窗口管理自由
  • OI免爆零指南
  • 抖音无水印视频下载:开源工具的技术实现与实用指南
  • Spring Authorization Server保姆级调试手册:手把手教你用Postman玩转四种授权流程
  • 真机调试太麻烦?试试用Genymotion模拟传感器和拖拽传文件来调试你的App