【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

相关文章

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

使用C/C++调用libcurl调试消息的方式

《使用C/C++调用libcurl调试消息的方式》在使用C/C++调用libcurl进行HTTP请求时,有时我们需要查看请求的/应答消息的内容(包括请求头和请求体)以方便调试,libcurl提供了多种... 目录1. libcurl 调试工具简介2. 输出请求消息使用 CURLOPT_VERBOSE使用 C

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依