使用Jetpack Compose时保持向后兼容性?



Jetpack Compose的API最小值为21,但如何才能保持向后兼容到API 16或以下版本?

我们可以通过简单的构建版本检查来做到这一点吗?像这样:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

// API 16 and below
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN){
setContentView(R.layout.activity_main)
val someTV = findViewById(R.id.someTV)
} 
// API 21 and above
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setContent{
someComposeUI()
}
}
}

构建两个productFlavors可能仍然是最现实的方法,因为这样的配置将为您提供源集,这些源集严格区分正在编译的内容。

flavorDimensions "apilevel"
productFlavors {
legacy {
dimension "apilevel"
versionNameSuffix "-legacy"
minSdkVersion 16
maxSdkVersion 19
}
compose {
dimension "apilevel"
minSdkVersion 21
versionCode android.defaultConfig.versionCode + 50000
}
}

这也为dependencies提供了legacyImplementationcomposeImplementation

最新更新