教程006-aidl跳转¶
方案一¶
打开工程,修改 scripts/core.gradle 中:
改成:
然后在执行 Android Studio 执行 Build ,执行完成之后 再把 build_aidl 改回false即可。
这里需要说明,此 as-aosp 工程不支持编译任何模块,这个方案这么做其实也是借助了 Android Studio 会把 .aidl 编译成 .java。但是编译很快就会报错了,所以 .aidl 能生成多少 .java 都是随缘的。
不推荐此方案。
方案二¶
此方案弥补了方案一的缺陷,所有的 .aidl 都能找到对应的 .java 文件。实现完美跳转。
但该方案必须在整编源码的基础上。
软连接或者copy¶
如果你使用软链接方案,具体可以查看 教程001-首次配置 ;那么你还需要把 out 软链接或者 copy 过来。 但是 out 特别大,如果都 copy 或者软链接过来可能会影响加载速度;所以这里提供了一个脚本,只需要 copy 或者软链接我们关心的代码。
脚本位于:
使用方法:
说明:
- --aosp
指的是 aosp 源码目录(整编过了)
- --target
as-aosp指定的目录
也就是 教程001-首次配置 提到的在 local.properties 文件中新增你的 aosp 源码路径:
- --copy
1为copy
0为软连接
执行完这个脚本之后,再 sync 工程就可以实现 aidl 的跳转了。
如:
进阶¶
执行 aosp_generator_out_code_linker.py 脚本时,可以指定跟as-aosp配置的源码目录不一致。
有点绕哈,比如:
在 local.properties 文件中新增你的 aosp 源码路径:
而你执行:python aosp_generator_out_code_linker.py --aosp aosp源码目录 --target /home/solo/code/link-aosp-out
都是可以的,但如果你这里配置的两个路径不一样,就需要你在 local.properties 文件中新增你的 aosp 源码路径:
也就是多配置了 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 的目录一致,新增这个方案是为了满足每个人的需求。