1

我想为我的应用程序添加一个自定义功能,该功能仅适用于某些特定的 Android API 版本集。此功能需要模块清单中的自定义使用库声明。

所以我有

  • 主应用程序 (API 21-27)
  • 功能遗留(API 21-26 和自定义使用库声明)
  • 新功能 (API 27)

是否可以通过 Android App Bundle 实现上述目标?我已经为“Feature Legacy”和“Feature New”创建了自定义的“dynamic-feature”模块,但它看起来像 bundletool 合并了使用的动态功能模块中的所有清单并将它们放入基本应用程序中。因此,由于未完成使用库声明,我无法在 Android 27 设备上启动该应用程序。此外,由于清单合并问题,无法更改模块 B 的 minSdkVersion (27)。

编辑:我知道可以创建具有不同风格的多个 APK - 但我的目标是拥有单一、易于分发的包。

4

2 回答 2

2

“普通”,不会为此使用模块,因为结果总是会被1合并Mainfest.xml。一种可能会添加一个接口类,该类由另外两个类实现 - 一个以 API21-26为目标,另一个以 API 为目标27+

而使用App Bundles,您只需要一个 APK 的目标是不现实的,因为它绕过了动态交付的整个想法。功能模块有一个插件,允许配置拆分:

apply plugin: 'com.android.dynamic-feature'

并且动态特征清单(对于此类模块)有不同的配置, dist:onDemand="true"并且android:isFeatureSplit="true"在此处相关,与模块中的minSdkVersion和结合使用。targetSdkVersionbuild.gradle

于 2018-07-30T10:47:29.397 回答
1

这可以通过使用 Android 风格轻松实现,其中模块 A 和 B 根据其 API 分开。

由于构建不同,您可以为模块 B 指定与模块 A 不同的 minSdkVersion。

于 2018-07-30T10:01:59.477 回答