android - 如何在不克隆整个 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)。
解决方案
您最好的选择可能是克隆 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 项目文件。请注意,每次打开项目时,索引都需要很长时间才能完成。
推荐阅读
- entity-framework - Automapper 使用实体框架为外键返回 null
- ios - 继承具有“依赖关系”的 CustomViewController 的正确方法
- java - 如何在使用 Java Swing 在 Eclipse 中使用 AstParser 时修复 NoClassDefFoundError
- reactjs - 如何将变量传递给 React 组件中的 setState 回调?
- ruby-on-rails - Google App Engine 不断启动删除的版本/实例
- angularjs - 我正在尝试在函数中添加 2 个属性的值,但 1 个属性的值未定义。我只需要增加 css bar 的百分比
- php - PHP - 在多维数组中搜索匹配项并返回数组键
- reactjs - 浏览器显示重定向的 url 但组件未呈现 - Redux Saga
- c# - 无论使用鼠标还是触摸,如何支持 MouseUp、MouseDown 和 MouseMove 事件
- html - 如何在 Angular 输入的 [value] 属性中使用多个变量