Google Play Servcie 和Android版Firebase将最低兼容API 14

原标题:Google Play services and Firebase for Android will support API level 14 at minimum
链接:https://android-developers.googleblog.com/2016/11/google-play-services-and-firebase-for-android-will-support-api-level-14-at-minimum.html
作者:Doug Stevenson (开发者倡导者)
翻译:arjinmc

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的支持

results matching ""

    No results matching ""