首页 > 解决方案 > 如何在不克隆整个 android 库的情况下在 Android Studio 中构建部分 Android 源代码?

问题描述

我正在尝试更好地理解 Android 源代码的一部分。

但不是仅仅阅读它,我想在 Android Studio 中拥有它,并且能够修改它并重新构建、运行它等。

在过去,我通过简单地将有问题的 Java 文件/s 从源代码一个一个地复制到 Android Studio 中,重命名它们并将它们的包名称更改为我自己的......并修复任何损坏的依赖项来完成此操作。

这种处理方式适用于RadioButton.java等简单类,但我现在尝试“导入”的“部分”/模块是tts 包中的所有文件

所以,我在网上找到了TextToSpeech.java,将其复制并粘贴到Android Studio中,将其重命名为MyTTS.java并将包名更改为我的......并开始检查“未解析的符号”并根据需要重复该过程......

但是,由于这个 tts 包在 Android 代码树中“更深”,我在解决损坏的依赖项(非公共组件、aidl 文件、注释等!)时遇到了一些障碍,我可以问个人问题,但在我尝试之前,我想知道是否已经有一些既定的方法可以做到这一点,而不涉及将整个 Android 库导入 Android Studio)。

标签: androidandroid-studiobuildandroid-source

解决方案


您最好的选择可能是克隆 Android 源代码存储库,限制您下载的内容,然后使用 idegen.sh 命令生成一个 Android Studio 项目,这将使您能够从 Android Studio 中完全访问源代码。

要克隆最少数量的 Android 源代码,请确保为 repo 命令指定特定分支,将 git 深度限制为 1 并指定git partial clone。这些将加快您的克隆速度,但仍需要一些时间。例如

$ repo init --depth=1 -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r46 --partial-clone
...
$ repo sync -j 4
...

下载后,您可以运行 idegen.sh 命令来生成您的 Android Studio 项目文件:

$ source build/envsetup.sh
...
$ lunch aosp_x86-eng
...
$ mmm development/tools/idegen/
...
$ development/tools/idegen/idegen.sh
...

然后,您将在 AOSP 树的顶部找到 Android Studio 项目文件。请注意,每次打开项目时,索引都需要很长时间才能完成。


推荐阅读