除了一些配置和代码管理外,您还可以构建多个 APK,为不同的最低 API 级别及不同版本的 Google Play 服务提供支持。您可以利用 Gradle 中的构建变体来实现这一点。首先,为旧版本以及较新版本的应用定义构建风味。例如,在 build.gradle 中用定义构建不同的风味 “Flavor” ,为所用的 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 服务客户端内容库而构建的产品风味。这非常适合于仅调用在 10.0.0 内容库中可用的 API 的情况。如果您需要调用在 10.2.0 中提供的较新 API,那么您就必须为较新 API 调用创建一个兼容性内容库,使这些 API 仅内置到可以使用它们的应用版本中:
声明一个 Java 接口,公开您要执行的当前版本 Play 服务中可用的更高级别的功能。
构建两个实现此接口的 Android 内容库。“最新”实现应根据需要调用较新的 API。“旧”实现应根据需要执行较旧版本 Play 服务中的功能,或者不执行任何操作。两个内容库都应添加此接口。
使用“legacyCompile”和“currentCompile”依赖项有条件地将每个内容库编译到应用中。
在应用的代码中,无论何时需要较新的 Play API,均通过兼容性内容库调用。
为每个风味构建一个发布版 APK,然后将两个 APK 都发布到 Play 商店中,这样设备就可使用最适合自己的版本进行更新。您还可以通过点击 “阅读原文” 了解更多有关在 Play 商店中提供多 APK 支持的内容。