【AOSP】手把手教你编译和调试AOSP源码

2024-04-07 04:44

本文主要是介绍【AOSP】手把手教你编译和调试AOSP源码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、下载AOSP源码

在开始之前,我们先安装编译AOSP需要的一些系统基本依赖,如下命令

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

基于 AOSP 的开发推荐在 Ubuntu 20.04 LTS 下进行,因此你电脑最优选择是 Ubuntu 系统。如果不选择 Ubuntu 系统,也可以使用 DeepinDebian 等环境相似的系统。假设你对AOSP 有一定的了解,但还没有真正实践,这篇文章很适合你。

如果你电脑没有repo工具需要先安装 repo 工具,命令如下

mkdir ~/bin
# 使用tuna镜像下载repo
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
chmod +x ~/bin/repo
# 以下这条命令可以添加到 `~/.bashrc` 文件中
export PATH=~/bin:$PATH

假设电脑已经包含了git工具,接下来需要同步源代码,命令如下

mkdir aosp 
cd asop
# 初始化repo,指定源码分支为 `android-10.0.0_r41`
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r41
# 同步远程代码
repo sync

同步源码的耗时较长,耐心等待即可。源码同步完成后,即可进行第二步以后的操作。

二、编译SDK

初始化 AOSP 编译环境与选择 SDK 作为编译目标

# 初始化环境
source build/envsetup.sh
# 选择编译目标
lunch sdk-eng

终端输出信息如下

pan@pan-PC:~/Android/aosp/android13$ lunch sdk-eng============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
TARGET_PRODUCT=sdk
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=x86
TARGET_ARCH_VARIANT=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-5.15.77-amd64-desktop-x86_64-Deepin-20.9
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MASTER
OUT_DIR=out
===========================================

编译sdk

make sdk

最后生成的sdk目录在 out/host/linux-x86/sdk/sdk/android-sdk_eng.{$USER}_linux-x86 下,用于 AOSP 的后续开发和调试。

三、编译AOSP并启动模拟器

初始化 AOSP 编译的目标运行设备,这里我们选择 aosp_x86_64-eng

lunch aosp_x86_64-eng

编译

# 使用 make 数值 的命令进行指定线程数编译,也可以使用 m 命令自动选择最大线程数
make -j$(nproc)

编译完成之后,使用如下命令启动模拟器

emulator

四、使用ASFP打开AOSP的子模块

我们先介绍 ASFP,它是 Android Studio for Platform 的简称,谷歌官方提供了该工具,可以方便的进行基于 AOSP 的开发。如果你电脑上还没有安装 ASFP,可以到 https://developer.android.google.cn/studio/platform?hl=en 下载安装。

这里我们要打开 Setting (系统设置APP)源代码并进行调试,步骤如下:

  • 首页点击:Import Asfp Project

  • 填写项目信息

项目关键信息如下图红标部分
在这里插入图片描述

配置完成之后,点击 Finish 打开到代码编辑器窗口。

  • 配置SDK

(1)打开 Project Struct -> Platform Settings -> SDKs -> + -> Add Android SDK:添加 Android SDK,选择 out/host/linux-x86/sdk/sdk/android-sdk_eng.{$USER}_linux-x86,添加后可重命名为 aosp10-sdk,点击 Apply

(2)打开左侧的Project,配置SDK,选择刚才添加的SDK。

(3)Project Settings -> Modules,确保 Settings 模块已经使用了上述配置的SDK。这个时候项目就配置好了。

五、调试代码

回到代码主编辑器窗口后,首先找到关键的代码打断点,然后点击 Attach Debugger to Android Process 按钮连接到模拟器,就可以看到代码的调试效果了。如下图:
在这里插入图片描述

在上图中,我打断点的位置是Settings 模块的 SettingsHomepageActivity 类的 onCreate 方法。该方法在启动系统设置时被调用,用来初始化界面。

点击 OK 后,我们需要在虚拟机上手动打开系统设置,然后就可以进行调试了。效果如下图:
在这里插入图片描述

这篇关于【AOSP】手把手教你编译和调试AOSP源码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/881666

相关文章

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

C++工程编译链接错误汇总VisualStudio

目录 一些小的知识点 make工具 可以使用windows下的事件查看器崩溃的地方 dumpbin工具查看dll是32位还是64位的 _MSC_VER .cc 和.cpp 【VC++目录中的包含目录】 vs 【C/C++常规中的附加包含目录】——头文件所在目录如何怎么添加,添加了以后搜索头文件就会到这些个路径下搜索了 include<> 和 include"" WinMain 和

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

UnrealScriptIDE调试环境部署

先安装vs2010   再安装VSIsoShell.exe, 下载地址 https://pan.baidu.com/s/10kPNUuDGTbWXbz7Nos-1WA       fd3t   最后安装unside,下载地址 https://archive.codeplex.com/?p=uside  安装中间有一步选择Binary文件夹要选对路径。   安装好以后,启动 UDKDe

C/C++的编译和链接过程

目录 从源文件生成可执行文件(书中第2章) 1.Preprocessing预处理——预处理器cpp 2.Compilation编译——编译器cll ps:vs中优化选项设置 3.Assembly汇编——汇编器as ps:vs中汇编输出文件设置 4.Linking链接——链接器ld 符号 模块,库 链接过程——链接器 链接过程 1.简单链接的例子 2.链接过程 3.地址和

Windwos +vs 2022 编译openssl 1.0.2 库

一 前言 先说 结论,编译64位报错,查了一圈没找到解决方案,最后换了32位的。 使用qt访问web接口,因为是https,没有openssl库会报错 QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());if (reply){if (reply->error() == QNetworkReply::NoError

IDEA配置Tomcat远程调试

因为不想把本地的Tomcat配置改乱或者多人开发项目想测试,本文主要是记录一下,IDEA使用Tomcat远程调试的配置过程,免得一段时间不去配置到时候忘记(毕竟这次是因为忘了,所以才打算记录的…) 首先在catalina.sh添加以下内容 JAVA_OPTS="-Dcom.sun.management.jmxremote=-Dcom.sun.management.jmxremote.port

springboot家政服务管理平台 LW +PPT+源码+讲解

3系统的可行性研究及需求分析 3.1可行性研究 3.1.1技术可行性分析 经过大学四年的学习,已经掌握了JAVA、Mysql数据库等方面的编程技巧和方法,对于这些技术该有的软硬件配置也是齐全的,能够满足开发的需要。 本家政服务管理平台采用的是Mysql作为数据库,可以绝对地保证用户数据的安全;可以与Mysql数据库进行无缝连接。 所以,家政服务管理平台在技术上是可以实施的。 3.1

高仿精仿愤怒的小鸟android版游戏源码

这是一款很完美的高仿精仿愤怒的小鸟android版游戏源码,大家可以研究一下吧、 为了报复偷走鸟蛋的肥猪们,鸟儿以自己的身体为武器,仿佛炮弹一样去攻击肥猪们的堡垒。游戏是十分卡通的2D画面,看着愤怒的红色小鸟,奋不顾身的往绿色的肥猪的堡垒砸去,那种奇妙的感觉还真是令人感到很欢乐。而游戏的配乐同样充满了欢乐的感觉,轻松的节奏,欢快的风格。 源码下载

基于Java医院药品交易系统详细设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W+,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码+数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人  Java精品实战案例《600套》 2023-2025年最值得选择的Java毕业设计选题大全:1000个热