该方法适用于无法使用asfp IDE,windows挂载服务器磁盘并使用SSH编译AOSP,Linux直接编译AOSP等环境。
asfp IDE需要linux环境,需要直接打开ipr,修改.idea里的模块,比较麻烦,其实并不适用。
推荐使用下面的aidegen生成cmakeLists.txt来进行索引。
Android Studio编译frameworks或packages下都可以使用该方式,修改对应从IDE即可,这里仅对clion处理native程序或so库。
1、编译aosp的aidegen
shell
source->lunch # 不用再说了
make aidegen # 编译aidegen工具
2、使用aidegen来编译需要写的c++程序
首先需要了解aidegen的基础命令 Android AIDEGen tools基本使用-CSDN博客
无法贴出源码和图片,故只能文字说明。
这里只说clion的模块编译
shell
aidegen <moduleName> -n -s
执行后,会进行ninja编译等,编译共享库,一般先执行make 会缩短时间。
等待一会,会输出日志
shell
Generate blueprint json successfully.
2025-03-18 11:42:09 common_util.py:89:DEBUG: aidegen.lib.module_info_util.generate_merged_module_info takes: 239.01s
2025-03-18 11:42:10 module_info.py:56:DEBUG: Loading /data1/aaa/workspace/android-14/out/soong/merged_module_info.json as module-info.
2025-03-18 11:42:12 project_info.py:587:INFO: Ready to build the jar or srcjar files. Files count = 0
2025-03-18 11:42:12 project_info.py:594:DEBUG: Build Time, duration = 0.0001690387725830078
Warning: Native modules build skipped:
moduleName.
2025-03-18 11:42:12 common_util.py:89:DEBUG: __main__.main_without_message takes: 552.79s
INFO: To report an AIDEGen tool problem, please use this link: https://goto.google.com/aidegen-bug
2025-03-18 11:42:12 clearcut_client.py:130:DEBUG: Scheduling thread to run in 0.000000 seconds
这时候会如果有网络环境应该会执行其他操作,但是我这边没有网络,故会卡住。直接ctrl+c退出即可
3、使用cmake文件
在目录out/development/ide/clion/...
,"..."表示模块所在位置。
进入模块所在位置下,找到模块内部的cmakeLists文件,有两个cmake文件,对比就能看出,外部引用了内部的cmake文件。
然后将其拷贝到代码所在的位置即可,打开clion,clion会自动识别。
4、修改cmake文件
- 第三行的set(ANDROID_ROOT ...)修改为自身对应的位置
- 第四行的c和第五行的cxx 编译器注释掉,使用clion自带的即可
- 注释掉下面所有的set,只要include和file的标签
点击右上角cmake的配置文件修改后出现的刷新图标即可,索引会自动设置成功。
5、修改clion的索引慢的配置设置
进入设置->高级设置->Clion->勾选使用ReSharper c++语言引擎
设置->高级设置->Clangd->勾选 使用Clangd的索引器、在clangd中保留过时的AST
重启clion即可。