OkHttp具有recently dropped support for Android 4,但受separate 3.12.x
branch支持的情况除外,该支持将一直支持到2020年12月(可能只收到重要更新或错误修正)。
假设您希望像我一样继续支持Android 4,因为10%的Android用户仍占很大比例,并且不想陷入死胡同的分支。
有没有办法为所有{sdk版本使用3.12.x
分支,而是为3.12
使用sdk < 21
分支,为{{ 1}},这有点像当然可以对3.13
使用sdk >= 21
和对HttpUrlConnection
使用OkHttp sdk < 21
吗?
答案 0 :(得分:1)
我实际上在为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
}
}
}
android中的部分是创建两种产品口味,一种用于minSdk 17,一种用于minSdk 21。
android.applicationVariants中的部分由两部分组成:
当您将两个APK都上传到Playstore时,Google将确保将正确的APK分配给不同的设备。