gpt4 book ai didi

android - 在整个应用程序中处理多个实验性注释

转载 作者:行者123 更新时间:2023-12-04 23:37:14 30 4
gpt4 key购买 nike

我有一个应用程序大量使用 Jetpack Compose 的实验性功能,因此我必须在可组合项上声明一堆注释。由于这些注释要求调用者也声明它们,所以我最终遇到了一种情况,即我有一个使用以下代码的 Activity :

import androidx.appcompat.app.AppCompatActivity

import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.ui.ExperimentalComposeUiApi

import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.permissions.ExperimentalPermissionsApi


class MainActivity : AppCompatActivity() {

@ExperimentalPermissionsApi
@ExperimentalComposeUiApi
@ExperimentalPagerApi
@ExperimentalMaterialNavigationApi
@ExperimentalMaterialApi
override fun onCreate(savedInstanceState: Bundle?) {
// … wiring up compose code (which propagates the experimental annotations)
避免这种情况的替代方法是使用 @OptIn相反,但由于每个声明只允许一个,所以它不适用于具有多个实验性功能的我的情况。
无论如何……这很好用——在 Kotlin 1.5 中。
使用 Kotlin 1.6 我收到编译错误:

Opt-in requirement marker annotation on override requires the same marker on base declaration


但是基本声明在我无法更改的标准 API 中。
我怎样才能使这个编译(并像以前一样工作)?

最佳答案

我厌倦了我的代码被所有这些注释污染。摆脱它们并编译代码的最简单方法是将其添加到您的顶级 build.gradle 文件中 - 这并不详尽。只需为您需要的每个注释添加更多编译器参数:

allprojects {
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
freeCompilerArgs += [
"-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"
]
}
}
}

关于android - 在整个应用程序中处理多个实验性注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70216206/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com