前言
由于最近将自己的库进行升级,把能和Android分离的库,都处理成跨平台库,或者jvm的库。在最新的IDEA中顺手就将kotlin升级到了1.6.10 ,万万没想到,灾难来了。由于jetpack compose 1.0.5版本还是依赖在kotlin1.5,jetpack compose代码就会报各种错误,如下:
void org.jetbrains.kotlin.psi2ir.generators.TypeTranslatorImpl.(org.jetbrains.kotlin.ir.util.ReferenceSymbolTable, org.jetbrains.kotlin.config.LanguageVersionSettings, org.jetbrains.kotlin.descriptors.ModuleDescriptor, kotlin.jvm.functions.Function0, boolean, org.jetbrains.kotlin.ir.util.StubGeneratorExtensions, int, kotlin.jvm.internal.DefaultConstructorMarker)’
ExperimentalAnimationApi Opt-in requirement marker annotation on override requires the same marker on
Please fix your configuration (or
suppressKotlinVersionCompatibilityCheck
等等。。。
解决方法
只能把kotlin的版本降到1.5.31,最简单的方法就是全局搜索kotlin
,然后将有版本1.6以上的,都改成1.5.31.
如果有些第三方库你没法改,那就试下下面这个:
修改app/build.gradle.kts
android {
kotlinOptions {
jvmTarget = Kotlin.jvm_target
freeCompilerArgs += listOf(
"-P",
"plugin:androidx.compose.compiler.plugins.kotlin:suppressKotlinVersionCompatibilityCheck=true",
"-Xuse-experimental=kotlin.ExperimentalUnsignedTypes",
"-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi",
"-Xuse-experimental=kotlinx.coroutines.InternalCoroutinesApi",
"-Xuse-experimental=androidx.compose.animation.ExperimentalAnimationApi",
"-Xuse-experimental=androidx.compose.ExperimentalComposeApi",
"-Xuse-experimental=androidx.compose.material.ExperimentalMaterialApi",
"-Xuse-experimental=androidx.compose.runtime.ExperimentalComposeApi",
"-Xuse-experimental=androidx.compose.ui.ExperimentalComposeUiApi",
"-Xuse-experimental=coil.annotation.ExperimentalCoilApi",
"-Xuse-experimental=kotlinx.serialization.ExperimentalSerializationApi",
"-Xuse-experimental=com.google.accompanist.pager.ExperimentalPagerApi"
)
}
}
使用groovy的同学自己转换下了。
如果还不行,报了其他错误的话,暂时我也不清楚了。