使用aidegen导入AOSP工程到Clion并配置toolchains

一、aidegen介绍

aidegen是AOSP中自带的一个工具,可以将源码中的某个工程导入进IDE,从而可以使用IDE的智能提示,提高编码效率。而源码中的工程并不是独立存在的,还会依赖其他工程中的各种模块,aidegen 会主动把对应的模块编译一遍,同时把这些依赖都整理好导入到IDE中,从而避免因为找不到依赖而爆红的问题。

二、aidegen用法

在使用aidegen之前,首先需要在AOSP根目录下执行:

shell 复制代码
$ source build/envsetup.sh && lunch <TARGET>

然后便可以使用aidegen命令了。

aidegen使用方法为:

css 复制代码
$ aidegen modulename -i [c/s/j] -p [clion path] -s [skip build]

modulename,模块名称,也就是工程中Android.bp中的name字段 -i 指定IDE,c = Clion, s = Android Studio, j = Intellij -p 指定IDE路径,如: /home/user/Applications/CLion -s 是否跳过build,第一次执行时会编译工程,编译过一次之后,可以加这个标记跳过编译过程

例如:

swift 复制代码
$ aidegen android.hardware.automotive.vehicle@V1-default-service -i c -p /home/guozhang/Applications/CLion

上述命令执行完毕将会用CLion打开android.hardware.automotive.vehicle@V1-default-service这个工程

三、配置Clion toolchains

在正常情况下,打开CLion后仍然会爆红,提示找不到各种文件,这个时候需要重新配置一下build toolchain,将默认的build toolchain配置为Android SDK中的CMake和NDK中的Compiler即可。

1.安装Cmake和NDK

打开Android Studio SDK Manager,安装Cmake和NDK:

任选一个版本安装都可以。

2.配置Clion toolchains

打开Clion设置,选择Build,Execution,Deployment -> Toolchains:

点击+ 号,创建一个新的Toolchains,Name随便填,如:System

重点设置CMake,C Compiler,C++ Compiler三个选项,路径设置为Android SDK目录中的CMake和NDK。

例如:

bash 复制代码
CMake: 
/home/guozhang/Android/Sdk/cmake/3.22.1/bin/cmake

C Compiler: 
/home/guozhang/Android/Sdk/ndk/25.2.9519653/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang

C++ Compiler:
/home/guozhang/Android/Sdk/ndk/25.2.9519653/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang++

3.设置工程,使用新的toolchains

打开Clion设置,选择Build,Execution,Deployment -> CMake:

在Toolchain这一栏中,下拉选择刚创建的Toolchain,然后保存

4.Reload Project

点击File -> Reload CMake Project重新加载工程即可。

5.如果遇到提示:This file does not belong to any project target; code insight features might not work property; 直接根据提示将该文件添加到CMakeList中即可

相关推荐
00后程序员张17 小时前
对比 Ipa Guard 与 Swift Shield 在 iOS 应用安全处理中的使用差异
android·开发语言·ios·小程序·uni-app·iphone·swift
悠哉清闲19 小时前
不同车型drawable不同
android·开发语言
00后程序员张1 天前
在 iOS 设备上同时监控 CPU、GPU 与内存的方法
android·ios·小程序·https·uni-app·iphone·webview
测试_AI_一辰1 天前
项目实践笔记 9:打卡/日报Agent项目Bug 修改与稳定性收口(v1.0)
android·开发语言·人工智能·功能测试·ai编程·ab测试
马 孔 多 在下雨1 天前
Kotlin协程进阶王炸之作-Kotlin的协程到底是什么
android·开发语言·kotlin
冬奇Lab1 天前
【Kotlin系列15】多平台开发实战:一次编写,多端运行
android·开发语言·kotlin
Dxy12393102161 天前
告别默认排序:MySQL自定义排序的“炼金术”
android·数据库·mysql
请叫我大虾1 天前
发现一个jdk中ArrayList的小BUG
android·java·bug
一起养小猫1 天前
Flutter for OpenHarmony 实战:双控制系统实现(按钮+键盘)
android·flutter·计算机外设·harmonyos
_李小白1 天前
【Android 美颜相机】第十八天:GPUImageChromaKeyBlendFilter 解析
android·数码相机