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
提供了legacyImplementation
和composeImplementation
。