aosp11/12/13 framework源码开发IDE工具之idegen/aidegen/AIDEGen详细使用

使用aidegen导入AOSP工程到Clion并配置toolchains aidegen是AOSP中自带的一个工具,可以将源码中的某个工程导入进IDE,从而可以使用IDE的智能提示,提高编码效率。而源码中的工程并不是独立存在的,还会依赖其他工程中的各种模块,aidegen 会主动把对应的模块编译一遍,同时把这些依赖都整理好导入到IDE中,从而避免因为找不到依赖而爆红的问题。 阅读详情
AI摘要

文章介绍了如何使用AIDEGen工具来更高效地在AndroidStudio中导入和管理AOSP系统源码,包括通过生成项目配置文件、排除无用模块以及跳过编译等步骤,以提升开发体验和代码导航功能。AIDEGen简化了开发者的工作,支持多种IDE,并提供了详细的使用示例和故障排查提示。,

hi,粉丝朋友:

近期又粉丝朋友聊到了如果做aosp系统应用开发,有什么工具或者方式来导入代码可以正常跳转和代码提示等?
更多内容: https://blog.youkuaiyun.com/learnframework/article/details/130016893

Android Studio导入系统源码

针对这个问题其实我课程里面的[入门课就有有讲解android studio导入整套系统源码]的详细说明,这里就再次补充一下android studio导入android系统源码
1、生成对应的android.ipr和android.iml文件

 make idegen -j4
 “development/tools/idegen/idegen.sh” (报错find: ‘out/target/product/generic_x86_64/root/d’: Permission denied没有关系不影响ipr和iml文件生成)
 sudo chmod 777 android.iml android.ipr
 2、有了ipr和iml,删减一部分android.iml的内容,主要原因源码太多,要排除部分没用项目,还有就是依赖部分只留下自己moudle就可以
 把android.iml中的excludeFolder标签都删除用以下标签
<excludeFolder url="file://$MODULE_DIR$/art" />
      <excludeFolder url="file://$MODULE_DIR$/bionic" />
      <excludeFolder url="file://$MODULE_DIR$/bootable" />
      <excludeFolder url="file://$MODULE_DIR$/build" />
      <excludeFolder url="file://$MODULE_DIR$/compatibility" />
      <excludeFolder url="file://$MODULE_DIR$/cts" />
      <excludeFolder url="file://$MODULE_DIR$/dalvik" />
      <excludeFolder url="file://$MODULE_DIR$/developers" />
      <excludeFolder url="file://$MODULE_DIR$/developers/samples" />
      <excludeFolder url="file://$MODULE_DIR$/development" />
      <excludeFolder url="file://$MODULE_DIR$/device" />
      <excludeFolder url="file://$MODULE_DIR$/device/google" />
      <excludeFolder url="file://$MODULE_DIR$/device/sample" />
      <excludeFolder url="file://$MODULE_DIR$/docs" />
      <excludeFolder url="file://$MODULE_DIR$/external" />
      <excludeFolder url="file://$MODULE_DIR$/flashing-files" />
      <excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs" />
      <excludeFolder url="file://$MODULE_DIR$/hardware" />
      <excludeFolder url="file://$MODULE_DIR$/kernel" />
      <excludeFolder url="file://$MODULE_DIR$/libcore" />
      <excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
      <excludeFolder url="file://$MODULE_DIR$/out" />
      <excludeFolder url="file://$MODULE_DIR$/out/soong/.intermediates" />
      <excludeFolder url="file://$MODULE_DIR$/pdk" />
      <excludeFolder url="file://$MODULE_DIR$/platform_testing" />
      <excludeFolder url="file://$MODULE_DIR$/prebuilt" />
      <excludeFolder url="file://$MODULE_DIR$/prebuilts" />
      <excludeFolder url="file://$MODULE_DIR$/sdk" />
      <excludeFolder url="file://$MODULE_DIR$/shortcut-fe" />
      <excludeFolder url="file://$MODULE_DIR$/system" />
      <excludeFolder url="file://$MODULE_DIR$/test" />
      <excludeFolder url="file://$MODULE_DIR$/toolchain" />
      <excludeFolder url="file://$MODULE_DIR$/tools" />

把orderEntry标签都删除,只剩下如下两个即可以,这样跳转时候就不会跳其他jar

 <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="jdk" jdkName="Android API 33 Platform" jdkType="Android SDK" />

这样android studio就完全可以进行相关的跳转了,同时各个app其实也可以进行跳转,如下图的Settings:

在这里插入图片描述

这种其实也有一些androidx库依赖标红啥的,这个相对比较少影响不是太大,不过这个也可能是很多同学不喜欢的点,那么有啥更好办法解决么?当然有,那就是今天主题AIDEGen

AIDEGen导入各个模块代码

AIDEGen相关文档:
tools/asuite/aidegen/README.md

首先看它的相关官方readme,英文的,其实也比较好懂,这里就不做翻译了,我相信也完全可以看懂

AIDEGen

AIDEGen aims to automate the project setup process for developers to work on
Java or C/C++project in popular IDE environment. Developers no longer need to manually
configure an IntelliJ project, such as all the project dependencies. It’s a
command line tool that offers the following features:

  • Configure Android Studio or IntelliJ project files with the relevant module
    dependencies resolved.

  • Launch IDE for a specified sub-project or build target, i.e. frameworks/base
    or Settings.

  • Launch IDE for specified folder(s) which contains build targets, i.e. cts.

  • Auto configure JDK and Android coding style for IntelliJ.

(上面其实就是说明了一下AIDEGen是干啥的,大概意思就是它是一个自动生成项目配置文件,针对不同的主流ide都是可以的,比如 Android Studio or IntelliJ project等,就不需要我们自己针对不同ide来搞对应项目)

1. Prerequisites:

  • IDE installation, choose one of prefer IDE, including Android Studio,
    IntelliJ IDEA, Eclipse, CLion and VS Code.

  • Setup Android development environment.

$ source build/envsetup.sh && lunch <TARGET>

(以上是预备条件,配置好aosp的env和lunch,而且要本身系统安装好了的对应的ide,比如Android Studio,IntelliJ IDEA, Eclipse, CLion and VS Code)

2. Basic Usage:

Example 1: Launch IDE with module name

Example to generate and launch IntelliJ project for framework and Settings:
可以直接使用module name来进行对应的启动

$ aidegen Settings framework

Example 2: Launch IDE with module path

Example to generate and launch IntelliJ project for framework and Settings:
可以直接使用module path来进行对应的启动

$ aidegen packages/apps/Settings frameworks/base

Example 3: Launch IDE with build skipped

Example to generate and launch IntelliJ project for framework and Settings and
skip build time:
这里可以用-s来跳过编译,一般使用这种如果已经编译了的话

$ aidegen Settings framework -s

Example 4: Launch IDE with native module

Example to generate and launch CLion project:

$ aidegen <module> -i c

The native projects will be launched in CLion and you have to select,
Tools > CMake > Change Project Root
Change project root to the source directory: the relative path which is the directory shown in CLion’s project view. For example, if frameworks/base/media is your project, please change project root directly to frameworks/base/media.

3. Optional arguments:

Developers can also use the following optional arguments with AIDEGen commands.

OptionLong optionDescription
-d--depthThe depth of module referenced by source.
-i--ideLaunch IDE type, j=IntelliJ s=Android Studio e=Eclipse c=CLion v=VS Code
-p--ide-pathSpecify user’s IDE installed path.
-n--no_launchDo not launch IDE.
-r--config-resetReset all AIDEGen’s saved configurations.
-s--skip-buildSkip building jars or modules.
-v--verboseDisplays DEBUG level logging.
-a--android-treeGenerate whole Android source tree project file for IDE.
-e--exclude-pathsExclude the directories in IDE.
-l--languageLaunch IDE with a specific language,j=java c=C/C++ r=Rust
-h--helpShows help message and exits.

4. Troubleshooting tips:

If you get an error like: “Dependent modules dictionary is empty.” or other errors, try a make
clean.

5. FAQ:

Q1. If I already have an IDE project file, and I run command AIDEGen to generate
the same project file again, what’ll happen?

A1: The former IDEA project file will be overwritten by the newly generated one
from the aidegen command.

Q2: When do I need to re-run AIDEGen?

A2: Re-run AIDEGen after repo sync.

6. Hint:

  1. In IntelliJ, uses [File] > [Invalidate Caches / Restart…] to force
    project panel updated when your IDE didn’t sync.

  2. If you run aidegen on a remote desktop, make sure there is no IntelliJ
    running in a different desktop session.

6. Feedback:

If you have any questions or feedback, contact aidegen_tnn@google.com.

If you have any bugs or feature requests email them to buganizer-system+429701@google.com.

实战体验Settings

命令:

aidegen packages/apps/Settings -i s -s

在这里插入图片描述

针对androidx等也不会报错
在这里插入图片描述

相对系统app来说确实体验还是很不错,比源码整体导入那种相对更好一些,也非常简单,不需要为了Setting导入整套代码,跳转framework部分的代码也是正常的:
在这里插入图片描述

aidegen:为AOSP代码中Java和C / C ++项目自动生成ide配置 aosp中模块众多,依赖复杂,如何快速完成ide配置,从而能愉快地在ide中进行代码的导航和跳转是我们需要解决的问题,好在google给我们提供了一款好用的ide配置生成工具,能快速地生成Java和C/C++项目的ide配置文件,对于Java项目,能生成.idea文件,对于C、C++项目能快速生成cmake文件。.idea文件夹在项目当前目录下cmakeList文件在out/development/ide/clion/目录下。 阅读详情

相关推荐

AIDEGen + Android Studio本地环境调试代码

AIDEGen是谷歌在Android10推出的一个自动生成项目配置文件的工具,可以 Android Studio or IntelliJ IDEA等查看调试源码.SDK路径:/home/gzk/aosp/out/host/linux-x86/sdk/sdk/android-sdk_eng.gzk_linux-x86。JDK路径:/home/gzk/aosp/prebuilts/jdk/jdk11/linux-x86。在模拟器中打开“Setting”,Android Studio进入断点内。

guozikai的博客 1461

AIDEGen + Android Studio本地环境调试代码-Settings

AIDEGen + Android Studio本地环境调试代码_aidegen android studio-优快云博客。5、如何修改静态代码分析工具lint,以解决IDE中各种标红的错误(实际非错误)。4、如何让AndroidManifest.xml和各种资源xml能相互引用。6、如何使用Android studio单步调试SystemUI。1、使用AOSP源码中aidegen工具,构建依赖模块。2、使用AOSP源码中的JDK。3、使用AOSP源码中的SDK。接下来我们依次解决上面的步骤。

shi450561200的博客 2539

AIDEGen工具详解:从Android 10源码里挖出来的IDE自动化神器,到底省了哪些事?

本文深入解析AIDEGen工具如何简化Android源码开发流程,自动生成IDE项目文件、解析依赖关系并配置开发环境,显著提升AOSP开发效率。通过对比传统手动配置与AIDEGen自动化方案,展示其在Android 10及以上版本中的核心优势与实用技巧。

weixin_26934905的博客 367

使用AIDEGen进行AOSP开发

AIDEGen,大概是“Android IDE (helper) Generator”的简写,是 AOSP 源代码树中的一个工具,它允许从 Android Studio 等通常仅为非平台应用程序开发配置的 IDE 中处理系统应用程序。AIDEGen 旨在自动化项目设置过程,以便开发人员在流行的 IDE 环境中处理 Java 项目。开发者不再需要手动配置一个 IntelliJ 项目,比如所有的项目依赖。

记录技术,记录生活 4157

AIDEGen实战:5分钟搞定AOSP项目在Android Studio的代码跳转配置

本文详细介绍了如何使用AIDEGen工具在5分钟内完成AOSP项目在Android Studio中的代码跳转配置。通过自动化解析模块依赖,AIDEGen能快速生成适配IDE的配置文件,显著提升Java与C/C++代码的导航效率,特别适合AOSP开发者优化工作流程。

weixin_29303701的博客 111

AIDEGen实战:一键生成AOSP项目的IDE配置,提升Java与C/C++开发效率

本文详细介绍了AIDEGen工具在AOSP项目开发中的实战应用,帮助开发者一键生成Java与C/C++项目的IDE配置,大幅提升开发效率。通过智能依赖分析和自动化配置,AIDEGen简化了复杂的AOSP开发环境搭建过程,特别适合Android系统开发者使用。

weixin_28730927的博客 428

Android AIDEGen tools基本使用

AIDEGen旨在自动化项目设置过程,以便开发人员在流行的 IDE 环境中处理 Java 或 C/C++ 项目。

特立独行的博客 3885

idgen导入Android11源码

会出现很多依赖项,直接删除,然后导入。目录作为依赖,并调整依赖优先级。

Android小码家 690

Framework编译并使用Android studio阅读源码指导

当前值太小,需要修改 /etc/sysctl.conf 文件,修改这个文件需要Root权限。

qq_31481093的博客 1353

STM32F103开发实战:如何用CubeMX+CLion调整Flash起始地址(附完整CMake配置)

本文详细介绍了在STM32F103开发中如何使用CubeMX和CLion工具链调整Flash起始地址,包括链接脚本修改、系统文件配置和CMake工程适配。通过实战步骤和完整配置示例,帮助开发者实现固件双备份、OTA升级等高级功能,提升嵌入式开发效率。

5b6n7m8的博客 210

AS5600磁编码器选型与安装避坑指南:磁铁形状、间隙距离到底怎么选?(附实测数据)

本文详细解析了AS5600磁编码器的选型与安装要点,包括磁铁形状、间隙距离等关键参数的选择,并附有实测数据支持。特别针对Arduino和I2C接口的应用场景,提供了硬件选型和机械安装的实用指南,帮助开发者避免常见陷阱,提升系统精度和稳定性。

weixin_27038245的博客 288

AIDEGen将aosp项目导入到Android studio我们喜欢的工具

aosp导入到as里面编辑

黑马程序员-masai158 1054

Windows服务器SSL漏洞修复实战:如何一键禁用TLS 1.0/1.1避免SWEET32攻击

本文提供了Windows服务器修复SWEET32漏洞的实战指南。通过组策略编辑器,详细讲解如何一键禁用不安全的TLS 1.0/1.1协议,并优化密码套件顺序,以消除由3DES等弱加密算法带来的安全风险。文章还涵盖了应对SQL Server等应用兼容性挑战的解决方案,以及企业级批量部署的脚本化方法,帮助管理员系统性地提升服务器TLS/SSL安全配置。

weixin_29310631的博客 246

android studio 调试 framework 层代码

sdk 里面自带的源码(前提是你已经下载了)像 Activity , Service 等是可以直接调试的。 sdk_source_code.png 但这不是 framework 层所有的代码,要调试其它的代码,要先下载 android 系统源码。 source_code.png 接下来就可以编译 idegen 模块了 很多人说需要先全编译整个系统,其实是不用全编译系统的,只要编译...

峻峰飞阳的博客 blog.youkuaiyun.com/while0 1233

工业质检新利器:手把手教你用AD-DINOv3实现零样本缺陷检测(附MVTec AD实战)

本文详细介绍了AD-DINOv3框架在工业质检中的应用,通过零样本异常检测技术解决传统方法的标注成本高和泛化能力弱问题。文章包含技术原理解析、MVTec AD数据集实战部署、模型训练流程及工业部署优化技巧,帮助读者快速掌握这一创新技术。

seed的博客 764

避开SM30维护视图的坑:自动更新字段+日志记录的5个关键配置步骤

本文深入解析了SAP ABAP开发中SM30维护视图的深度定制,聚焦于实现自动更新字段与日志记录功能。文章详细阐述了从SE54配置起点到核心编码的5个关键步骤,重点讲解了如何利用事件驱动模型(如05创建事件和01保存前事件)安全操作动态数据结构,并提供了避免常见陷阱的实用技巧,帮助开发者构建稳定可靠的自动化维护机制。

plant的博客 623

AIDEGen

【代码】AIDEGen。

ConceptCon 812

基于mediapipe的动作捕捉和人物模型的驱动

我实习做这个的时候,当时也找了很多资料,但很多资料都没有讲透,下面我就总结一下自己结合看代码后的感悟,还有一些我认为很重要的点。

qq_58484580的博客 7706

android studio导入android系统源码 development/tools/idegen/idegen.sh执行报错

1、make idegen build completed successfully (32 seconds) 2、执行 development/tools/idegen/idegen.sh脚本 test@test-Lenovo:~/aosp$ development/tools/idegen/idegen.sh find: 'out/target/product/emulator_x86_64/root/d': Permission denied 这里大家看到这里Permission denied很

learnframework的博客 3356

从PCEP到PCAP:一个数据分析师的Python认证升级之路与学习规划

本文详细介绍了数据分析师从PCEP(初级)到PCAP(中级)的Python认证升级路径,包括考试内容、备考策略和时间规划。通过系统化的学习,读者可以掌握Python在数据分析中的核心应用,提升职业竞争力。文章还提供了实用的代码示例和认证考试对比,帮助读者高效备考。

weixin_27427619的博客 440

毕业设计:丹麦电力电价预测预测未来24小时的电价pytorch+lstm+历史特征和价格+时间序列 电价预测模型资源 完整代码数据可直接运行

毕业设计:丹麦电力电价预测预测未来24小时的电价pytorch+lstm+历史特征和价格+时间序列 电价预测模型资源 完整代码数据可直接运行

356

make idegen 报错

make idegen Saved manifest to manifest.xml build/core/config.mk:601: *** Error: could not find jdk tools.jar at /usr/lib/jvm/java-11-openjdk-amd64/bin/../lib/tools.jar, please check if your JDK was installed correctly。 停止。 其实是java的环境变量没搞对 source javae.

hitzhu2000的博客 999

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Androidstudio导入源码调试及使用

一:首先是安装studio 1、windows 2、linux 二:导入源码 单独编译idegen模块生成idegen.jar 在源码的根目录下,执行下面命令编译出idegen.jar文件 source build/envsetup.sh mmm development/tools/idegen/ 命令执行完成后会输出idegen.jar的路径:out/host/darwin-x86/framework/idegen.jar 将生成的idegen.jar文件放到编译生成的out目录中或者没

qq_28852011的博客 1416

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: android framework实战车机手机系统开发环境相关问题补充
下一篇: android WMS中的Proto/ProtoLog/ProtoLogTool日志原理介绍
千里马学框架
博客等级 码龄6年 1万+粉丝 650原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值