1. 解决的问题
Android开发中,有很大一部分是Framework定制开发,即需要阅读、修改frameworks仓库下的java代码,本文解决如何配置一个好用的framework代码跳转环境问题。
本文介绍的是使用aidegen + android studio配置。
首先简单介绍一下aidegen是什么,它是谷歌内置的一个脚本,用于生成各个IDE的工程,包括Android Studio、CLion、IntelliJ、Eclipse、VSCode,其中用于的较多的是Android Studio,用于生成Java工程,C++工程这个方案并不理想,如果需要配置C++开发环境,可以参考我的另一篇文章:Android配置C++开发环境
2. 实践步骤
下面以Android12为例说明
2.1. 生成Android Studio工程
$ 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
optional arguments:
-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_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 the AIDEGen tool problem, please use this link: https://goto.google.com/aidegen-bug
常用命令如下(以下用于生成frameworks仓库的Android Studio工程):
$ aidegen -i s -n frameworks/
2.2. Android Studio配置
其实我们的最终目标是想在Windows下面使用Android Studio打开远程服务器的工程,因为大部分的开发模式还是本地开发机为Windows,编译机为Linux,两者使用Samba进行文件互传。
在Windows电脑上直接打开以上生成的Android Studio工程是不行的,会直接闪退,因为其中的路径都是Linux下以/
开头的路径,并不能被Windows识别。
以下是修改步骤:
- .idea/modules.xml
原本的配置:
<module fileurl="file:///$PROJECT_DIR$/frameworks.iml" filepath="$PROJECT_DIR$/frameworks.iml" />
<module fileurl="file:///$PROJECT_DIR$/dependencies.iml" filepath="$PROJECT_DIR$/dependencies.iml" />
<module fileurl="file:////data/code/roc_rk3588s_pc/Android12.0/RK3588_Android12.0/frameworks/base/framework_srcjars.iml" filepath="/data/code/roc_rk3588s_pc/Android12.0/RK3588_Android12.0/frameworks/base/framework_srcjars.iml" />
<module fileurl="file:////data/code/roc_rk3588s_pc/Android12.0/RK3588_Android12.0/frameworks/frameworks.iml" filepath="/data/code/roc_rk3588s_pc/Android12.0/RK3588_Android12.0/frameworks/frameworks.iml" />
需要改成如下配置:
<module fileurl="file://$PROJECT_DIR$/frameworks.iml" filepath="$PROJECT_DIR$/frameworks.iml" />
<module fileurl="file://$PROJECT_DIR$/dependencies.iml" filepath="$PROJECT_DIR$/dependencies.iml" />
<module fileurl="file://Z:/code/roc_rk3588s_pc/Android12.0/RK3588_Android12.0/frameworks/base/framework_srcjars.iml" filepath="Z:/code/roc_rk3588s_pc/Android12.0/RK3588_Android12.0/frameworks/base/framework_srcjars.iml" />
<module fileurl="file://Z:/code/roc_rk3588s_pc/Android12.0/RK3588_Android12.0/frameworks/frameworks.iml" filepath="Z:/code/roc_rk3588s_pc/Android12.0/RK3588_Android12.0/frameworks/frameworks.iml" />
首先需要将/data/code/roc_rk3588s_pc
替换成Z:/code/roc_rk3588s_pc
,其次特别需要注意的是Linux下是file:////data/code/roc_rk3588s_pc
形式,而Windows下需要是file://Z:/code/roc_rk3588s_pc
形式,区别是Linux下的file:
后面是三个/
随后跟着路径,而Windows下需要是file:
后面是两个/
随后跟着路径。
- .idea/vsc.xml
<mapping directory="$PROJECT_DIR$" vcs="Git" />
如果是以file:
开头的路径,也要注意从Linux下转换成Windows下的形式。
- dependencies.iml 和 frameworks.iml
这两个文件在frameworks
目录下,用于列举Java源码的目录。
只需要将/data/code/roc_rk3588s_pc
替换成Z:/code/roc_rk3588s_pc
即可。
至此,路径替换完成,可以使用Windows下的Android Studio打开Samba的frameworks目录,打开后注意Project SDK选择JDK,不能选Android SDK,因为我们就是需要修改本地工程的这部分代码,JDK的版本可以参考prebuilts/jdk
下面的JDK版本,对于Android12可以选择JDK11。
然后等待Android Studio索引完毕吧!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。