跳转至

教程006-aidl跳转

方案一

打开工程,修改 scripts/core.gradle 中:

build_aidl = false

改成:

build_aidl = true

然后在执行 Android Studio 执行 Build ,执行完成之后 再把 build_aidl 改回false即可。

这里需要说明,此 as-aosp 工程不支持编译任何模块,这个方案这么做其实也是借助了 Android Studio 会把 .aidl 编译成 .java。但是编译很快就会报错了,所以 .aidl 能生成多少 .java 都是随缘的。

不推荐此方案。

方案二

此方案弥补了方案一的缺陷,所有的 .aidl 都能找到对应的 .java 文件。实现完美跳转。

但该方案必须在整编源码的基础上。

软连接或者copy

如果你使用软链接方案,具体可以查看 教程001-首次配置 ;那么你还需要把 out 软链接或者 copy 过来。 但是 out 特别大,如果都 copy 或者软链接过来可能会影响加载速度;所以这里提供了一个脚本,只需要 copy 或者软链接我们关心的代码。

脚本位于:

scripts/aosp_generator_out_code_linker.py

使用方法:

python aosp_generator_out_code_linker.py --aosp aosp源码目录 --target as-aosp指定的目录 --copy 1或者0

说明:

  • --aosp

指的是 aosp 源码目录(整编过了)

  • --target

as-aosp指定的目录

也就是 教程001-首次配置 提到的在 local.properties 文件中新增你的 aosp 源码路径:

EXT_AOSP_ROOT=/home/solo/code/aosp
  • --copy

1为copy

0为软连接

执行完这个脚本之后,再 sync 工程就可以实现 aidl 的跳转了。

如:

进阶

执行 aosp_generator_out_code_linker.py 脚本时,可以指定跟as-aosp配置的源码目录不一致。

有点绕哈,比如:

在 local.properties 文件中新增你的 aosp 源码路径:

EXT_AOSP_ROOT=/home/solo/code/aosp

而你执行:python aosp_generator_out_code_linker.py --aosp aosp源码目录 --target /home/solo/code/link-aosp-out

都是可以的,但如果你这里配置的两个路径不一样,就需要你在 local.properties 文件中新增你的 aosp 源码路径:

EXT_AOSP_ROOT=/home/solo/code/aosp
EXT_AOSP_OUT_ROOT=/home/solo/code/link-aosp-out

也就是多配置了 EXT_AOSP_OUT_ROOT ,但话又说回来, aosp_generator_out_code_linker.py 脚本已经只软连接了需要的代码,不会很大。所以不建议配置不一样的路径。

思考:

Q1:那我能不能不执行这个脚本,直接 EXT_AOSP_OUT_ROOT 配置成源码真实路径呢?

A1:答案是可以的,但是加载可能会慢。

Q2:执行 aosp_generator_out_code_linker.py 脚本设置的 --target 跟 EXT_AOSP_ROOT 的目录一致就可以了,为什么还多此一举?

A2:嗯,最好是跟 EXT_AOSP_ROOT 的目录一致,新增这个方案是为了满足每个人的需求。

评论