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

相关推荐
雨白3 小时前
Jetpack系列(三):Room数据库——从增删改查到数据库平滑升级
android·android jetpack
花王江不语6 小时前
android studio 配置硬件加速 haxm
android·ide·android studio
江太翁8 小时前
mediapipe流水线分析 三
android·mediapipe
与火星的孩子对话8 小时前
Unity进阶课程【六】Android、ios、Pad 终端设备打包局域网IP调试、USB调试、性能检测、控制台打印日志等、C#
android·unity·ios·c#·ip
tmacfrank9 小时前
Android 网络全栈攻略(四)—— TCPIP 协议族与 HTTPS 协议
android·网络·https
fundroid10 小时前
Kotlin 协程:Channel 与 Flow 深度对比及 Channel 使用指南
android·kotlin·协程
草字10 小时前
cocos 打包安卓
android
DeBuggggggg11 小时前
centos 7.6安装mysql8
android
浩浩测试一下12 小时前
渗透信息收集- Web应用漏洞与指纹信息收集以及情报收集
android·前端·安全·web安全·网络安全·安全架构
移动开发者1号13 小时前
深入理解原子类与CAS无锁编程:原理、实战与优化
android·kotlin