Google Play Servcie 和 Android 版 Firebase 将最低兼容 API 14
Google Play Service 客户端库版本 10.0.0 以及 Android 版 Firebase 客户端库将是支持 Android API 9 (Android 2.3,Gingerbread 姜饼)的这些库的最后一个版本。这些库的下一个预定版本(版本 10.2.0)将把支持的最低 API 级别从 9 升到 14(Android 4.0.1, Ice Cream Sandwich 冰淇淋三明治)。这一变化将在 2017 年初发生。
为什么我们会停止在 Google Play 服务中支持 Gingerbread 和 Honeycomb?
Gingerbread 姜饼平台已经快六年了。许多 Android 开发者已经停止在他们的应用程序中支持 Gingerbread 姜饼。这有助于他们构建更好的应用程序,利用 Android 平台的新功能。对我们来说,情况是一样的。通过做出这一改变,我们将能够以更快的速度为 Android 开发者提供更强大的工具集合。
对于使用 Google Play Service 或 Firebase 的 Android 应用,这意味着什么:
你可以像目前一样使用版本 10.0.0 的 Google Play 服务和 Firebase。它将继续像过去一样与 Gingerbread 姜饼装置合作。
当你选择升级到将来的版本 10.2.0 时,并且如果你的应用程序最低程度地支持 API 14 或更高(通常在 build.gradle 中指定为“minSdkVersion”),则不会遇到任何版本控制问题。但是,如果你的应用程序支持的 API 级别低于 14 级,则在构建时会遇到问题,并显示如下所示的错误:
Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 9 cannot be smaller than version 14 declared in library [com.google.android.gms:play-services:10.2.0]
Suggestion: use tools:overrideLibrary="com.google.android.gms:play_services" to force usage
不幸的是,所述的建议不会帮助你在旧设备上成功运行你的应用程序。为了使用 Google Play Service 10.2.0 及更高版本,你可以选择以下选项之一:
1.将 API 级别 14 作为 API 支持的最低级别。
这是推荐的行动。要终止对不再接受 Google Play Service 更新的 API 级别的支持,只需将应用的 build.gradle 中的 minSdkVersion 值提高到至少 14.如果以这种方式更新你的应用并将其发布到 Play 商店,低于该级别的设备将无法查看或下载更新。但是,他们仍然可以下载和使用最新发布的以其设备为目标的应用程序版本。
所有 Android 设备中的一小部分使用的 API 级别低于 14.你可以 阅读有关 Android 设备当前分配的更多信息 。我们相信这些旧设备中的许多没有被积极使用。
如果你的应用在旧设备上仍然拥有大量用户,则可以在 Google Play 中使用多个 APK 支持来发布使用 Google Play Service 10.0.0 的 APK。这在下面描述。
2.构建多个 APK 以支持 API 级别低于 14 的设备。
除了一些配置和代码管理外,你还可以使用不同版本的 Google Play Service 构建支持不同最低 API 级别的多个 APK。你可以使用 Gradle 中的构建变体完成此操作。首先,为你的应用程序的旧版本和更新版本定义构建版本。例如,在你的 build.gradle 中,定义两种不同的产品风格,对于你使用的 Play 服务的组件,有两种不同的编译依赖关系:
productFlavors {
legacy {
minSdkVersion 9
versionCode 901 // Min API level 9, v01
}
current {
minSdkVersion 14
versionCode 1401 // Min API level 14, v01
}
}
dependencies {
legacyCompile 'com.google.android.gms:play-services:10.0.0'
currentCompile 'com.google.android.gms:play-services:10.2.0'
}
在上述情况下,有两种产品口味是针对 Google Play Service 客户端库的两个不同版本构建的。如果只有在 10.0.0 库中可用的 API 被调用,这将工作正常。如果你需要调用 10.2.0 中提供的更新的 API,则必须为较新的 API 调用创建一个兼容性库,以便它们仅构建于可以使用它们的应用程序版本中:
- 声明一个 Java 接口,该接口公开你想要执行的更高级功能,该功能仅在当前版本的 Play Service 中可用。
- 构建两个实现该接口的 Android 库。“当前”实现应该根据需要调用更新的 API。“旧版”的实施应该不会像老版本的 Play Service 那样按照需要运行。该接口应该被添加到这两个库。
使用 legacyCompile 和 currentCompile 依赖关系有条件地将每个库编译到应用程序中。 在应用的代码中,每当需要更新的 Play API 时,通过兼容性库进行调用。 在为每种风格构建发布 APK 之后,你将其发布到 Play 商店,然后设备将使用该设备的最适合的版本进行更新。详细了解 Play 商店中对多版本 APK 的支持 。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论