Android 如何在单个项目中创建多个即时应用程序?

Android 如何在单个项目中创建多个即时应用程序?,android,android-gradle-plugin,android-instant-apps,Android,Android Gradle Plugin,Android Instant Apps,在阅读了文档并观看了有关即时应用程序的官方谷歌教程后,我发现它至少需要一个功能模块,“最小模块”(带有共享代码的模块)和一个完整的应用程序模块。官方手册解释了如何在一个工作区中创建这些模块,用于单个应用程序 然而,在我们的例子中,我们在一个Android Studio项目中有很多不同的应用程序 我可以用支持库和一些共享代码创建一些公共模块(“最小模块”,根据官方命名,我理解为文档)。事实上,这个共享代码实际上是最小的,从技术上讲,唯一一个相当大的通用代码库是支持库(即时应用程序不会共享除启动器图

在阅读了文档并观看了有关即时应用程序的官方谷歌教程后,我发现它至少需要一个功能模块,“最小模块”(带有共享代码的模块)和一个完整的应用程序模块。官方手册解释了如何在一个工作区中创建这些模块,用于单个应用程序

然而,在我们的例子中,我们在一个Android Studio项目中有很多不同的应用程序

我可以用支持库和一些共享代码创建一些公共模块(“最小模块”,根据官方命名,我理解为文档)。事实上,这个共享代码实际上是最小的,从技术上讲,唯一一个相当大的通用代码库是支持库(即时应用程序不会共享除启动器图标以外的任何公共资源)


是否可以将gradle配置为为此项目中的每个应用程序生成即时应用程序?

这应该不是问题。当即时应用指南提到一个模块时,我们在这里讨论的是“功能模块”,而不是项目中的任何Gradle模块。您所描述的共享代码听起来更像是一个普通的库模块

对于每个即时应用程序,您至少需要2个Gradle模块。一个是应用FeatureGradle插件的功能模块。这一个将构建提供给用户的特性APK,您可以包括您需要的任何库,它们将成为最终APK的一部分,就像普通应用程序一样

第二个模块是instant app模块,应用instant app Gradle插件。这一个仅依赖于该功能模块,并构建功能APK的ZIP存档(在您的情况下,只有一个功能模块,只有1个)

当然,如果您不想为所有应用程序重复创建这些模块,您可以自由使用flavors来构建所有即时应用程序


听起来你并不需要它,但如果你想把你的应用分成多个功能模块,主要是为了减少总下载量,那么你需要在一个“基本功能”模块的基础上构建这些功能模块,它就像一个即时应用程序库,但是仍然要构建一个单独的APK。

我还建议浏览代码实验室,它展示了一个单一的功能模块:我假设当你说“许多不同的应用程序”时,你指的是“模块”,对吗
com.android.library
modules。虽然您必须提供有关项目结构的更多信息,但至少可能需要将这些模块更改为
com.android.feature
模块,然后将它们链接到
baseFeature
模块。您可以尝试Hassan提到的代码实验室,但显然,项目越大,重构可能越复杂。许多例子@