使用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中即可

相关推荐
martindelophy33 分钟前
用自然语言剪视频:我们在 Timeline Studio 中实现了 ChatCut 对话剪辑
android·音视频
ao-weilai1 小时前
MySQL数据库:复合查询
android·数据库·mysql
三少爷的鞋14 小时前
AI 时代,我们都将成为通才型开发者:只懂 Android,已经不够了
android
Dovis(誓平步青云)18 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
晚风叙码20 小时前
MySQL 数据类型详解:从数值到字符串,一篇讲透
android·mysql·adb
传奇开心果编程20 小时前
【Compose Multiplatform 跨端开发学与练】第3课 布局与组件
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程1 天前
【Compose Multiplatform 跨端开发学与练】第8课 资源管理与主题
android·windows·学习·ios·kotlin·web·composer
传奇开心果编程1 天前
【Compose Multiplatform 跨端开发学与练】第9课 测试与调试
android·学习·macos·ios·kotlin·web·composer
传奇开心果编程1 天前
【Compose Multiplatform 跨端开发学与练】第4课 导航与路由
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程1 天前
【Compose Multiplatform 跨端开发学与练】第6课 状态管理与架构
android·学习·ui·ios·架构·kotlin·composer