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

相关推荐
Doro再努力6 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
Daniel李华6 小时前
echarts使用案例
android·javascript·echarts
做人不要太理性7 小时前
CANN Runtime 运行时组件深度解析:任务调度机制、存储管理策略与维测体系构建逻辑
android·运维·魔珐星云
我命由我123458 小时前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
朗迹 - 张伟8 小时前
Tauri2 导出 Android 详细教程
android
lpruoyu9 小时前
【Android第一行代码学习笔记】Android架构_四大组件_权限_持久化_通知_异步_服务
android·笔记·学习
独自破碎E10 小时前
【BISHI15】小红的夹吃棋
android·java·开发语言
李堇13 小时前
android滚动列表VerticalRollingTextView
android·java
lxysbly14 小时前
n64模拟器安卓版带金手指2026
android
游戏开发爱好者817 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview