2.7 源码开发环境搭建 增加内容

This commit is contained in:
feiocng 2023-11-22 16:41:25 +08:00
parent 3d91c0b173
commit bf0f5f9d0d

View File

@ -661,6 +661,12 @@ fastboot boot twrp.img
### 2.7 源码开发环境搭建 ### 2.7 源码开发环境搭建
谷歌一直积极的探索在开发系统编辑与调试代码时如何让开发人员拥有一个好的开发体验。在2020年之前想要在IDE中开发系统代码需要借助AOSP中带的`idegen`工具。但是,系统代码量日渐庞大,`idegen`工具提供的项目管理方式让配置工作变得复杂,也非常的耗时与吃内存,于是有了新的`aidegen`工具2022年之后`idegen`工具的代码也几乎不在维护了。到目前,谷歌的风向又发生了变化,官方决定直接基于`Android Studio`来做一个定制的IDE集成系统代码的智能行语法提示、交叉引用代码跳转、编译与调试等功能于一体截至本书出版该工具命名为`Android Studio For platform`并推出了一个Linux的deb安装包还不支持macOS与Windows系统。
无论是`idegen`还是`aidegen`工具它们生成的项目管理文件都只支持分开单独编辑处理Java与Native代码。1`Android Studio For platform`则统一支持,本小节主要讲`idegen`还是`aidegen`这两个工具的使用。
#### 2.7.1 idegen
`Android`系统是一个非常庞大的工程,需要采用合适的编辑器或`IDE`来阅读与修改代码。如果改动不多,使用`vscode`导入工作区即可开始修改代码。`vscode`的智能提示和跳转相对`IDE`较为简陋,如果想要更加友好的开发体验,可以选择将源码导入`Android Studio`中编辑`java`部分代码,导入`Clion`中编辑`native`部分代码。 `Android`系统是一个非常庞大的工程,需要采用合适的编辑器或`IDE`来阅读与修改代码。如果改动不多,使用`vscode`导入工作区即可开始修改代码。`vscode`的智能提示和跳转相对`IDE`较为简陋,如果想要更加友好的开发体验,可以选择将源码导入`Android Studio`中编辑`java`部分代码,导入`Clion`中编辑`native`部分代码。
下面介绍如何将源码导入`Android Studio` 下面介绍如何将源码导入`Android Studio`
@ -769,6 +775,100 @@ add_subdirectory(system/core/lmkd/lmkd-arm64-android)
配置好`cmake`工程后,使用`clion`打开项目,选择上面的`CMakeLists.txt`文件所在的目录`out/development/ide/clion`。导入成功后,修改工程的根目录,`Tools->Cmake->Change Project Root`,然后选择源码根目录即可。 配置好`cmake`工程后,使用`clion`打开项目,选择上面的`CMakeLists.txt`文件所在的目录`out/development/ide/clion`。导入成功后,修改工程的根目录,`Tools->Cmake->Change Project Root`,然后选择源码根目录即可。
#### 2.7.2 aidegen
本节将介绍如何使用`aidegen`工具来生成Android Studio项目配置文件以及如何生成供CLion编辑生成的native项目管理工程文件。以下是详细的步骤
与使用`idegen`一样需要先安装好IDE。`Android Studio`的安装可以使用`sudo snap install android-studio`也可以到官方网站上下载deb文件后安装。`Clion`可以选择去该IDE的官方下载安装。这两个IDE安装完成后接下来是准备好需要开发的AOSP代码。然后执行如下命令
```
$ cd <path_to_aosp_source>
$ . build/envsetup.sh
$ lunch <target>
```
`path_to_aosp_source`为AOSP代码注意使用`aidegen`方式项目文件支持安卓11及以后版本的代码低版本的代码可能使用`idegen`更合适。`lunch`命令后的`target`指明要开发的目标,比如`aosp_cf_x86_64_phone-userdebug`。只有在`lunch`命令执行完后,`aidegen`命令才处于可用状态它是一个压缩的Python程序包被赋予了可执行权限。执行下面命令查看它的用法
```
$ which aidegen
<path_to_aosp_source>/prebuilts/asuite/aidegen/linux-x86/aidegen
$ aidegen --help
usage: aidegen [module_name1 module_name2... project_path1 project_path2...]
AIDEgen
This CLI generates project files for using in IntelliJ, such as:
- iml
- .idea/compiler.xml
- .idea/misc.xml
- .idea/modules.xml
- .idea/vcs.xml
- .idea/.name
- .idea/copyright/Apache_2.xml
- .idea/copyright/progiles_settings.xml
- Sample usage:
- Change directory to AOSP root first.
$ cd /user/home/aosp/
- Generating project files under packages/apps/Settings folder.
$ aidegen packages/apps/Settings
or
$ aidegen Settings
or
$ cd packages/apps/Settings;aidegen
positional arguments:
targets Android module name or path.e.g. Settings or packages/apps/Settings
options:
-h, --help show this help message and exit
-d {0,1,2,3,4,5,6,7,8,9}, --depth {0,1,2,3,4,5,6,7,8,9}
The depth of module referenced by source.
-v, --verbose Display DEBUG level logging.
-i IDE, --ide IDE Launch IDE type, j: IntelliJ, s: Android Studio, e: Eclipse, c: CLion, v: VS Code. The default value is 'u': undefined.
-p IDE_INSTALLED_PATH, --ide-path IDE_INSTALLED_PATH
IDE installed path.
-n, --no_launch Do not launch IDE.
-r, --config-reset Reset all saved configurations, e.g., preferred IDE version.
-s, --skip-build Skip building jars or modules that create java files in build time, e.g. R/AIDL/Logtags.
-a, --android-tree Generate whole Android source tree project file for IDE.
-e [EXCLUDE_PATHS ...], --exclude-paths [EXCLUDE_PATHS ...]
Exclude the directories in IDE.
-V, --version Print aidegen version string.
-l LANGUAGE, --language LANGUAGE
Launch IDE with a specific language, j: Java, c: C/C++, r: Rust. The default value is 'u': undefined.
INFO: To report an AIDEGen tool problem, please use this link: https://goto.google.com/aidegen-bug
```
`options`部分列出了支持的参数,可以看到,它支持生成`j: IntelliJ, s: Android Studio, e: Eclipse, c: CLion, v: VS Code`等多种IDE。接下来就是使用了。
使用AIDEGen工具生成供Android Studio使用的项目配置文件。执行以下命令
```
$ ./out/host/linux-x86/bin/aidegen -i <path_to_module> -p <path_to_android_studio_project>
```
其中,`<path_to_module>`是您要生成项目配置文件的模块的路径,`<path_to_android_studio_project>` 是您要将配置文件生成到的Android Studio项目的路径。你也可以不指定`-p`参数,这样会在终端窗口输出生成的项目路径。如执行下命令的命令,会生成供`Android Studio`使用的项目文件,里面包含了`Settings``framework`模块:
```
$ aidegen Settings framework -s
```
接下来打开生成的Android Studio项目并配置您的调试环境。您可以使用Android Studio的调试功能来调试Java代码生成的项目自动包括了AOSP里集成的JDK并配置好了代码依赖支持代码跳转与智能提示由于不需要一次性打开所有的项目启动加载速度会快上很多开发体验一下就上去了。
生成C项目工程的方法类似使用`aidegen`工具生成供CLion使用的C项目工程。执行以下命令
```
$ ./out/host/linux-x86/bin/aidegen -c -i <path_to_module> -p <path_to_clion_project>
```
其中,`<path_to_module>`是您要生成项目工程的模块的路径,`<path_to_clion_project>`是您要将工程生成到的CLion项目的路径。
打开生成的CLion项目并配置您的编辑环境。您可以使用CLion的功能来编辑和调试C代码。更多实践与说明可以参看AOSP代码tools/asuite/aidegen目录下的README.md文档。
## 2.8 gitlab配合repo管理源码 ## 2.8 gitlab配合repo管理源码
将源码导入`idea`中后,已经可以正常的开始修改源码了。在日常的项目开中,需要考虑到源码的管理,便于随时能够查看自己的修改,切换不同的分支进行开发。这样一个巨大的项目,一个月后,再想要查找当时修改的逻辑,就非常困难了。 将源码导入`idea`中后,已经可以正常的开始修改源码了。在日常的项目开中,需要考虑到源码的管理,便于随时能够查看自己的修改,切换不同的分支进行开发。这样一个巨大的项目,一个月后,再想要查找当时修改的逻辑,就非常困难了。