为什么要使用新的Android特性插件而不是库插件?

13

最近,Android 推出了一个新的 com.android.feature 插件,用于将应用程序拆分为功能模块以供新的 Instant apps 使用。似乎这是他们普遍推荐的架构,不仅适用于你拆分成即时应用程序的功能模块。你可以在这里了解有关其使用的更多信息。

我没有理解透这个插件相比于正常的 android-library 插件会有何优势或不同之处。我之所以问这个问题,是因为我的团队正在认真考虑将我们的代码拆分成功能模块,而这与 Android 即时应用程序无关,我不明白使用 com.android.feature 插件的好处是什么。


1
请同时查看以下链接: https://developer.android.com/topic/instant-apps/getting-started/structure.html 和 https://dev59.com/-1cP5IYBdhLWcg3wH20Z - Prags
2
“feature”和“dynamic-feature”的区别是什么? - IgorGanapolsky
1个回答

25

更新(截至2019年5月):对于任何偶然看到此帖子的人,下面的细节现在基本已过时。功能插件(com.android.feature)不再是“新”的,实际上现在正在被弃用,而是更倾向于支持即时启用应用程序包。请在官方博客文章中了解更多。

新的功能插件(com.android.feature)在行为和使用方式上与现有的库插件(com.android.library)几乎完全相同。

主要区别在于,库插件始终会输出一个Android Archive(AAR)文件,而当构建针对普通Android应用程序(通过插件com.android.application)时,功能插件能够输出一个AAR文件,并且能够输出该模块的 APK 文件,当构建针对即时应用程序(通过插件com.android.instantapp)时。

现在有哪些好处呢?当前,您只需要使用功能插件来构建Google Play Instant(以前称为Android即时应用程序)。如果您不打算构建 Google Play Instant,则目前使用功能插件的好处很少。一个小的好处可能是您可以输出应用程序每个模块的APK文件,并且可以独立安装和测试它们。


这与动态交付完全不同吗?https://developer.android.com/guide/app-bundle/configure - IgorGanapolsky
2
@IgorGanapolsky - 它并不完全不同,但确实有所不同。实际上,插件之间非常密切相关(com.android.dynamic-feature基于com.android.feature的学习成果),而且实际项目结构最终也会非常相似。鉴于此,希望未来这两个插件将合并为一个支持两者的插件。 - AdamK
谢谢您的解释。目前,Google的Topeka应用程序示例使用com.android.feature,而Android-Dynamic-Features示例使用com.android.dynamic-feature。因此,这两个示例都采用了类似的方法... - IgorGanapolsky
没错,非常相似的方法和项目结构,但是使用不同的插件(和不同的输出)。希望它们能在未来合并。 - AdamK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接