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

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

零基础玩转AOSPUbuntu 24.04环境下的源码编译实战指南1. 环境准备与系统配置在开始AOSP源码编译之前确保你的Ubuntu 24.04系统满足以下硬件要求存储空间至少250GB可用空间源码下载约80GB编译后占用更多内存16GB以上推荐32GB以获得更好体验CPU6核以上处理器编译过程非常消耗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-jdkAndroid 9OpenJDK 11sudo apt install openjdk-11-jdk设置默认JDK版本sudo update-alternatives --config java sudo update-alternatives --config javac2.2 Git配置正确配置Git信息对代码提交至关重要git config --global user.name YourName git config --global user.email your.emailexample.com git config --global color.ui auto2.3 Repo工具安装Repo是管理多个Git仓库的工具国内建议使用清华镜像mkdir ~/bin curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo chmod ax ~/bin/repo将以下内容添加到~/.bashrc文件末尾export PATH~/bin:$PATH export REPO_URLhttps://mirrors.tuna.tsinghua.edu.cn/git/git-repo使配置立即生效source ~/.bashrc3. 源码下载与同步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_r234Android 13android-13.0.0_r333Android 12android-12.1.0_r5323.2 同步源码使用以下命令开始同步源码repo sync -j8 --current-branch --no-tags遇到网络中断时可以恢复同步repo sync -j8 --fail-fast注意同步过程可能需要数小时建议在稳定的网络环境下进行可以使用screen或tmux保持会话。4. 编译环境准备4.1 环境变量设置加载编译环境脚本source build/envsetup.sh4.2 选择编译目标查看可用设备列表lunch常见编译目标说明aosp_arm-engARM架构模拟器带调试功能aosp_x86_64-engx86_64架构模拟器带调试功能aosp_car_x86_64-userdebug车载系统x86_64架构用户调试版本选择目标lunch aosp_x86_64-eng5. 开始编译系统5.1 全系统编译使用make命令开始编译make -j$(nproc)编译过程监控技巧查看CPU使用率htop监控磁盘空间df -h查看编译进度tail -f out/verbose.log.gz5.2 常见编译问题解决内存不足添加交换分区sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfileJava版本冲突确保使用正确的JDK版本依赖缺失根据错误提示安装缺失的软件包6. 运行编译结果6.1 启动模拟器编译完成后直接启动emulator自定义启动参数emulator -no-snapshot -no-audio -no-window -gpu off -memory 40966.2 刷入实体设备将系统镜像刷入支持解锁的Pixel设备fastboot flashall -w7. 模块化开发技巧7.1 单独编译模块常用模块编译命令命令功能描述mm编译当前目录模块mma编译当前目录及依赖模块mmma dir编译指定目录下的模块m libart编译特定模块如libart7.2 常见模块编译示例编译Framework资源make framework-res编译SystemUImake SystemUI编译Settings应用make Settings8. 开发调试技巧8.1 ADB调试常用ADB命令adb logcat -v threadtime # 查看详细日志 adb shell dumpsys package package # 查看包信息 adb shell am start -n activity # 启动Activity8.2 系统属性修改临时修改属性adb shell setprop key value永久修改需要修改build.prop并重新编译系统。8.3 性能分析工具systrace系统级性能分析python systrace.py -o mytrace.html sched freq idle am wm gfx viewperfetto新一代性能分析工具adb shell perfetto --txt -c /data/misc/perfetto-configs/battery_config.pbtxt -o /data/misc/perfetto-traces/battery_trace9. 进阶开发指南9.1 自定义系统组件添加新系统服务步骤创建服务Java接口frameworks/base/core/java/android/app/IMyService.aidl实现服务frameworks/base/services/core/java/com/android/server/MyService.java注册服务修改SystemServer.java添加权限frameworks/base/core/res/AndroidManifest.xml9.2 内核开发下载对应内核源码git clone https://aosp.tuna.tsinghua.edu.cn/kernel/common.git编译内核make -C kernel/msm-3.18 Oout ARCHarm64 CROSS_COMPILEaarch64-linux-android- menuconfig make -C kernel/msm-3.18 Oout ARCHarm64 CROSS_COMPILEaarch64-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.te10. 持续集成与自动化10.1 增量编译优化启用ccache加速后续编译export USE_CCACHE1 export CCACHE_DIR/path/to/ccache prebuilts/misc/linux-x86/ccache/ccache -M 50G10.2 自动化构建脚本示例构建脚本#!/bin/bash # 初始化环境 source build/envsetup.sh # 选择目标 lunch aosp_x86_64-eng # 清理旧构建 make clobber # 开始构建 START_TIME$SECONDS make -j$(nproc) 21 | 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

相关文章:

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

零基础玩转AOSP:Ubuntu 24.04环境下的源码编译实战指南 1. 环境准备与系统配置 在开始AOSP源码编译之前,确保你的Ubuntu 24.04系统满足以下硬件要求: 存储空间:至少250GB可用空间(源码下载约80GB,编译后占用…...

G1垃圾收集器四大关键机制原理详细描述

目录 G1垃圾收集器四大关键机制原理详细描述 一、Region分区化(核心基础机制) 1. 核心设计原理 2. 关键角色划分及作用 3. 核心作用 二、记忆集(Remembered Set,RSet) 1. 核心设计背景 2. 原理详细描述 3. 工作流程(结合GC场景) 4. 核心作用 三、卡表(CardT…...

不止是TextEncoder:盘点微信小程序与Web标准那些“不兼容”的坑及填坑指南

微信小程序与Web标准差异全景解析:从TextEncoder到系统性兼容方案 当开发者从传统Web开发转向微信小程序时,常常会遇到一些看似简单的API却无法使用的困扰。TextEncoder/TextDecoder的缺失只是冰山一角,背后反映的是小程序JavaScript运行时环…...

告别炼丹式开发:AdalFlow框架如何实现LLM应用的可训练与自动化优化

1. 为什么我们需要AdalFlow:告别“炼丹式”的LLM应用开发如果你在过去一两年里尝试过构建基于大语言模型的应用,无论是简单的聊天机器人、复杂的RAG系统,还是具备自主决策能力的智能体,你大概率经历过这样的痛苦循环:写…...

5分钟快速上手Testsigma:零代码自动化测试平台终极指南

5分钟快速上手Testsigma:零代码自动化测试平台终极指南 【免费下载链接】testsigma Testsigma is an agentic test automation platform powered by AI-coworkers that work alongside QA teams to simplify testing, accelerate releases and improve quality acro…...

3分钟解锁微信网页版:浏览器插件让你轻松访问网页微信

3分钟解锁微信网页版:浏览器插件让你轻松访问网页微信 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 还在为微信网页版无法登录而烦恼吗&…...

如何快速掌握FMA音乐分析数据集:终极开源音乐AI研究指南

如何快速掌握FMA音乐分析数据集:终极开源音乐AI研究指南 【免费下载链接】fma FMA: A Dataset For Music Analysis 项目地址: https://gitcode.com/gh_mirrors/fm/fma FMA音乐分析数据集是音乐信息检索(MIR)和人工智能音乐分析领域的宝…...

BiliDownload终极教程:三步完成B站无水印视频下载

BiliDownload终极教程:三步完成B站无水印视频下载 【免费下载链接】BiliDownload B站视频下载工具 项目地址: https://gitcode.com/gh_mirrors/bil/BiliDownload BiliDownload是一款功能强大的B站视频下载工具,专为需要保存B站无水印视频的用户设…...

我把 Go 服务的 GC 停顿从 200ms 降到 5ms:一次 GOGC + Ballast 调优实录

我把 Go 服务的 GC 停顿从 200ms 降到 5ms:一次 GOGC Ballast 调优实录 说实话,我一开始真没把 GC 当回事。 Go 的 GC 不是号称很牛吗?低延迟、并发标记、三色算法……直到上周凌晨 2 点,监控群里突然炸了:核心接口 P…...

从Tizen到AGL:一文搞懂开源车载系统的前世今生与选型指南

从Tizen到AGL:开源车载系统的技术演进与选型实战 当捷豹I-PACE的曲面中控屏在启动瞬间投射出动态光影,或是本田e:N系列用全数字仪表盘实现AR导航时,这些体验背后都运行着基于Linux的开源车载系统。不同于消费电子领域Android与iOS的二元格局&…...

Krita AI Diffusion:数字创作工作流中的AI集成解决方案

Krita AI Diffusion:数字创作工作流中的AI集成解决方案 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. 项目地址: https://gitcod…...

别再死记硬背了!用这3个Excel模板搞定PMP 49个过程的ITTO(附下载)

用Excel动态模板高效掌握PMP 49个过程的ITTO 备考PMP认证的考生们常常被49个项目管理过程的输入、工具与技术、输出(ITTO)搞得焦头烂额。传统的死记硬背不仅效率低下,还容易混淆不同过程组之间的关联。本文将介绍如何通过Excel动态模板系统化…...

保姆级教程:DolphinScheduler 3.1.8 分布式安装避坑指南(附MySQL驱动配置与Zookeeper依赖)

DolphinScheduler 3.1.8 企业级部署实战:从零构建高可用调度平台 在数据驱动的时代,企业级任务调度系统已成为数据中台不可或缺的基础设施。作为Apache顶级项目,DolphinScheduler以其去中心化架构和可视化DAG设计,正在重塑大数据任…...

避坑指南:Ansys Icepak仿真结果异常(高温、不收敛、数据丢失)的5个常见原因与解决方法

Ansys Icepak仿真异常全解析:从高温报警到数据丢失的终极排错手册 电子散热仿真工程师们对这样的场景一定不陌生——深夜加班运行的Icepak仿真突然弹出"solution not converged"警告,或是打开后处理界面时发现某个元件温度显示为"4235C&q…...

Roo Code v3.53.0 版本更新:社区团队接力,支持新模型并新增导航控件!

快速获取帮助与加入社区 想要快速获取帮助?可以加入 Discord;更喜欢异步交流,则可加入 r/RooCode。Roo Code 是就在你编辑器里的 AI 开发团队。 v3.53.0 版本新特性 Roo Code 插件不会停用。虽原团队因安装量达 300 万将全力投入 Roomote 开发…...

别再傻傻分不清了!一文搞懂ROM、PROM、EPROM、EEPROM的区别与选型

嵌入式存储芯片选型指南:ROM家族技术解析与实战应用 在嵌入式系统设计中,数据存储方案的选择往往决定着产品的可靠性、成本和生产效率。面对琳琅满目的ROM、PROM、EPROM和EEPROM芯片,不少工程师在项目初期都会陷入选择困境——究竟哪种技术最…...

50页精品PPT|MES整合IIOT技术提升企业数字化智造

很多制造企业产线设备老旧,数据埋在PLC里出不来。 业务系统和工控系统各用各的协议,数据对不上。 生产报表靠人工抄写汇总,每天晚两小时才看到昨天情况。 销售、计划、车间三边扯皮,订单交付总延期。 设备突发停机&#xff0c…...

保姆级教程:用geNomad识别病毒和质粒后,如何看懂那一堆.tsv和.faa文件?

保姆级教程:用geNomad识别病毒和质粒后,如何看懂那一堆.tsv和.faa文件? 当你第一次打开geNomad的输出文件夹,看到那些以_virus_summary.tsv、_virus_genes.tsv结尾的文件时,是不是感觉像在解读外星密码?别…...

代理技能集合:涵盖规划、开发、工具使用等多方面扩展能力

代理技能 这是一系列代理技能的集合,可在规划、开发和工具使用等方面扩展能力。 规划与设计 这些技能能帮助你在编写代码前深入思考问题。 to - prd:将当前对话上下文转化为产品需求文档(PRD),并作为 GitHub 问题提交。…...

2026届必备的降AI率助手推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下,于学术写作这个场景里,出现了好多款专业的AI辅助工具&#xf…...

2025最权威的五大降重复率平台横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于自然语言处理跟深度学习技术的智能工具,是AI写作软件,它能辅助用…...

OpenClaw实操指南28|Skill私有化改造:把别人的技能调教成你的“私房菜“

社区里有很多现成的技能,但"现成"不等于"合用"。 公共技能是为大多数人设计的,默认行为往往是最通用的那种。但你的工作流有自己的特点——文档格式不一样、发送目标不一样、输出风格不一样。 私有化改造就是把公共技能的源码拿过…...

04月26日AI每日参考:Google豪掷400亿押注Anthropic,DeepSeek V4开源发布

今日概览 今天AI圈有两件事值得重点关注。一是 Google 宣布向 Anthropic 投资最高 400 亿美元,这是 AI 史上最大单笔战略投资之一,直接说明大厂已把"押注最强模型公司"当成核心战略;二是 DeepSeek V4 正式开源,1M 超长…...

Cossistant:开源、AI原生、可自部署的React客服聊天组件

1. 项目概述:一个为开发者而生的开源客服聊天组件如果你正在用 React 或 Next.js 构建一个需要用户交互的 SaaS 产品,那么“客服聊天”这个功能大概率在你的待办清单上。市面上有 Intercom、Crisp 这样的成熟方案,但它们要么太贵,…...

告别SIFT/ORB?手把手教你用SuperPoint+SuperGlue搞定图像匹配(附Python实战代码)

告别SIFT/ORB?用SuperPointSuperGlue实现高精度图像匹配的Python实战指南 在计算机视觉领域,特征点匹配一直是许多应用的核心技术,从增强现实到自动驾驶,再到机器人导航。传统方法如SIFT和ORB曾长期占据主导地位,但随着…...

终极指南:Amlogic S9xxx电视盒子Armbian系统深度实战

终极指南:Amlogic S9xxx电视盒子Armbian系统深度实战 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588, r…...

别再只画ROC了!用R语言全面评估你的预测模型:区分度、校准度与临床实用性

别再只画ROC了!用R语言全面评估你的预测模型:区分度、校准度与临床实用性 在数据科学和临床研究的交叉领域,预测模型的评估往往被简化为ROC曲线和AUC值的单一维度。这种"唯AUC论"的评估方式,就像仅用一把尺子测量三维物…...

手把手教你用YOLOv8给手机App加个‘识花’功能:从模型训练到Android端部署全流程

从零构建花卉识别App:YOLOv8模型训练与Android端集成实战 在移动应用生态中,AI能力的集成已经从加分项变成了必选项。想象一下,当用户漫步公园时,只需打开你的App对准花朵拍照,就能立刻获得准确的品种信息——这种无缝…...

Dockerfile系列(四) 安全与最佳实践-生产环境不是游乐场

安全与最佳实践:生产环境不是游乐场本文基于 Docker 24.x,聚焦生产环境 Dockerfile 的安全红线与最佳实践。场景引入:线上容器被入侵了 去年组里出过一次安全事故:测试环境的容器被人挖矿了,CPU 飙到 100%。排查发现&a…...

WindowResizer:彻底解放你的Windows窗口管理自由

WindowResizer:彻底解放你的Windows窗口管理自由 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为那些顽固的、无法调整大小的应用程序窗口而烦恼吗?W…...