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

相关推荐
用户091 小时前
将挂起函数或流转换为回调
android
一条上岸小咸鱼2 小时前
Kotlin 控制流(一):条件和循环
android·kotlin
枯骨成佛16 小时前
MTK Android 14 通过属性控制系统设置显示双栏或者单栏
android
雨白16 小时前
Android 自定义 View:范围裁切和几何变换
android
jiushiapwojdap17 小时前
Flutter上手记:为什么我的按钮能同时在iOS和Android上跳舞?[特殊字符][特殊字符]
android·其他·flutter·ios
limuyang219 小时前
Android RenderScript-toolkit库,替换老式的脚本方式(常用于高斯模糊)
android
柿蒂20 小时前
产品需求驱动下的技术演进:动态缩放View的不同方案
android·kotlin·android jetpack
Andy_GF1 天前
鸿蒙Next在蒲公英平台分发测试包
android·ios·harmonyos
恋猫de小郭1 天前
iOS 26 正式版即将发布,Flutter 完成全新 devicectl + lldb 的 Debug JIT 运行支持
android·前端·flutter