使用AIDEGen进行AOSP开发

news/2025/1/3 4:35:01/

什么是AIDEGen

AIDEGen,大概是“Android IDE (helper) Generator”的简写,是 AOSP 源代码树中的一个工具,它允许从 Android Studio 等通常仅为非平台应用程序开发配置的 IDE 中处理系统应用程序。

AIDEGen 旨在自动化项目设置过程,以便开发人员在流行的 IDE 环境中处理 Java 项目。开发者不再需要手动配置一个 IntelliJ 项目,比如所有的项目依赖。它是一个命令行工具,提供以下功能:

  • 配置 Intellij 或 Android Studio 项目文件,并解决相关的模块依赖关系。
  • 为指定的子项目或构建目标启动 IDE,即 frameworks/base 或 Settings。
  • 为包含构建目标的指定文件夹启动 IDE,即 cts。
  • 为 Intellij 自动配置 JDK 和 Android 编码风格。

如何使用AIDEGen

需要注意的是,AIDEGen工具是在Android10以后才被引入的一个工具,所以如果你要使用它,需要确保你下载AOSP源码并切换到Android10或更高版本的分支

使用AIDEGen的前提是你下载并编译了AOSP源码,如果还不知道怎么编译AOSP源码,可以参考我的这篇文章:Ubuntu18 编译 AOSP 步骤 ,其中详细记录了编译AOSP源码的步骤。

这里假设你已经完成了AOSP源码的编译(完成编译以跑起来Android模拟器为准),AIDEGen工具就在源码的/tools/asuite/aidegen目录下,下面以使用AIDEGen导入AOSP Settings模块到Android Studio中为例,说明AIDEGen的使用方法:

  1. 首先需要在AOSP源码的根目录下执行下面的命令:
source build/envsetup.sh
lunch aosp_x86_64-eng // 这里具体构建哪个目标,根据你自己的情况来,你也可以使用默认的(即直接lunch回车)
  1. 上面一步执行成功后,即可在终端中使用AIDEGen命令了,使用下面的方法可自动编译Settings模块并使用Android Studio打开项目:
aidegen Settings -i s

-i s表示使用的IDE为Android Studio

以上命令执行后,AIDEGen 会自动帮你把对应的模块编译一遍,顺带把梳理出的依赖用 Python 生成一个个的 dependency,最后直接帮你把 AS 拉起,项目自动打开。这一步可能会有些耗时,执行成功后如下图所示:
在这里插入图片描述
如果你确定某个模块已经编译过了,那么可以加上-s参数跳过编译,这样拉起Android Studio的速度会快很多,比如:aidegen Settings -s -i s

参考

  • https://android.googlesource.com/platform/tools/asuite/+/refs/tags/android-10.0.0_r35/aidegen/README.md
  • 使用 AIDEGen 将 AOSP 项目导入 Android Studio

http://www.ppmy.cn/news/47891.html

相关文章

SpringBoot 介绍

1.简介 SpringBoot最开始基于Spring4.0设计,是由Pivotal公司提供的框架。 SpringBoot发展史: 2003年Rod Johnson成立Interface公司,产品是SpringFramework2004年,Spring框架开源,公司改名为Spring Source2008年&…

数据库复习资料abc

1、数据库设计过程一般包括哪些内容? 答:需求分析、概念设计、逻辑设计、物理设计、应用开发(系统实施)、系统维护。 2、数据库系统的特点? 答:数据结构化、数据共享性高,数据独立性强&#x…

CMMI管理流程—配置管理计划

1. 人员及职责 提示: (1)根据《项目计划》中的角色分配,确定配置管理员,CCB(配置控制委员会)成员。 (2)CCB的人数根据项目规模而定。一般地,项目经理是CCB…

全注解下的SpringIoc

Spring架构中的核心理念就是IOC和AOP,可以说,Spring的强大离不开这两大特性。 因为spring boot推荐采用注解开发,所以文中主要介绍基于注解的Spring Ioc。 IoC容器简介 Spring IoC 容器是个管理 Bean(在Spring 中把每个需要管理…

Nacos 客户端的服务发现与服务订阅机制的纠缠 - 篇七

Nacos 客户端的服务发现与服务订阅机制的纠缠 - 篇七 历史篇章 🕐Nacos 客户端服务注册源码分析-篇一 🕑Nacos 客户端服务注册源码分析-篇二 🕒Nacos 客户端服务注册源码分析-篇三 🕓Nacos 服务端服务注册源码分析-篇四 &am…

7.1 大学排行榜分析(project)

大学排名没有绝对的公正与权威,文件(alumni.txt, soft.txt)中为按照不同评价体系给出的国内大学前100名排行,对比两个排行榜单前m的学校的上榜情况,分析不同排行榜排名的差异。 输入输出 第一行输入1,第二行输入m&…

双塔模型:微软DSSM模型浅析

1.背景 DSSM是Deep Structured Semantic Model (深层结构语义模型) 的缩写,即我们通常说的基于深度网络的语义模型,其核心思想是将query和doc映射到到共同维度的语义空间中,通过最大化query和doc语义向量之间的余弦相似度,从而训…

【C++学习】类和对象--封装

具有相同性质的对象,我们可以抽象称为类(如:人类,车类 封装 封装是C面向对象三大特性之一 1.将属性和行为作为一个整体,表现生活中的事物 2.将属性和行为加以权限控制 一.表现事物,属性和行为写在一起 …