如何配置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即可。

相关推荐
Kapaseker3 小时前
一杯美式搞懂 Any、Unit、Nothing
android·kotlin
黄林晴3 小时前
你的 Android App 还没接 AI?Gemini API 接入全攻略
android
恋猫de小郭13 小时前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
冬奇Lab14 小时前
PowerManagerService(上):电源状态与WakeLock管理
android·源码阅读
BoomHe19 小时前
Now in Android 架构模式全面分析
android·android jetpack
二流小码农1 天前
鸿蒙开发:上传一张参考图片便可实现页面功能
android·ios·harmonyos
鹏程十八少1 天前
4.Android 30分钟手写一个简单版shadow, 从零理解shadow插件化零反射插件化原理
android·前端·面试
Kapaseker1 天前
一杯美式搞定 Kotlin 空安全
android·kotlin
三少爷的鞋1 天前
Android 协程时代,Handler 应该退休了吗?
android
火柴就是我2 天前
让我们实现一个更好看的内部阴影按钮
android·flutter