如何配置Clion编写aosp的c++程序

该方法适用于无法使用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即可。

相关推荐
Java个体户13 分钟前
maven打包找不到依赖jar的类
intellij idea
V少年16 分钟前
深入浅出Java线程池
android·java
顾林海23 分钟前
深度解析Hashtable工作原理
android·java·面试
老板来根葱1 小时前
这一次,让SystemServer, SystemServiceManager,SystemService不可能再记混
android·源码阅读
鱼洗竹1 小时前
Flow 的操作符
android
张风捷特烈1 小时前
平面上的三维空间#05 | 几何形体
android·flutter
stevenzqzq9 小时前
android中dp和px的关系
android
一一Null11 小时前
Token安全存储的几种方式
android·java·安全·android studio
JarvanMo12 小时前
flutter工程化之动态配置
android·flutter·ios
时光少年14 小时前
Android 副屏录制方案
android·前端