drm*_*wer 7 android okhttp okhttp3
OkHttp 最近放弃了对Android 4的支持,除非通过一个单独的3.12.x分支支持该分支,直到2020年12月结束(并且可能只收到重要的更新或错误修正)。
假设您希望像我一样继续支持Android 4,因为10%的Android用户仍占很大比例,并且不想陷入死胡同的分支中...
没有将3.12.x所有sdk版本都卡在分支上,有没有办法使用3.12branch for sdk < 21和3.13branch for sdk >= 21,有点像当然可以使用HttpUrlConnectionfor sdk < 21和OkHttp 3.13for sdk >= 21吗?
小智 2
我实际上在为 NativeScript 创建的项目中创建了一个示例:nativescript-http
我想minSdk >= 21使用 OkHttp4 并minSdk > 17 && minSdk < 21使用 LTS 版本:OkHttp 3.12。我使用 minSdk 17 因为它与 NativeScript 一样低。当然,您可以选择 OkHttp3 支持的最低值。
这并不像为不同的 minSdk 版本创建风格那么简单,这可能是由于 NativeScript 通过插件处理依赖关系的方式。我花了半天时间才弄清楚如何做到这一点,所以我将其发布在这里,可能会对某人有所帮助:
android {
// ... other config.
flavorDimensions "api"
productFlavors {
minApi21 {
dimension "api"
minSdkVersion 21
versionNameSuffix "-minApi21"
}
minApi17 {
dimension "api"
minSdkVersion 17
versionNameSuffix "-minApi17"
}
}
}
android.applicationVariants.all { variant ->
if (variant.name.contains("minApi17")) {
variant.getCompileConfiguration().resolutionStrategy.force "com.squareup.okhttp3:okhttp:3.12.+"
variant.getRuntimeConfiguration().resolutionStrategy.force "com.squareup.okhttp3:okhttp:3.12.+"
}
variant.outputs.each { output ->
if (variant.name.contains("minApi17")) {
output.versionCodeOverride = 10000000 + variant.versionCode
} else {
output.versionCodeOverride = 20000000 + variant.versionCode
}
}
}
Run Code Online (Sandbox Code Playgroud)
android 中的部分是创建 2 种产品风格,一种用于 minSdk 17,一种用于 minSdk 21。
android.applicationVariants 中的部分由两部分组成:
当您将两个 APK 上传到 Playstore 时,Google 将确保将正确的 APK 分发到不同的设备。
| 归档时间: |
|
| 查看次数: |
709 次 |
| 最近记录: |