Jetpack Compose 预览版在带有补丁 1 的 Arctic Fox 中停止工作

Jetpack Compose preview stopped working in Arctic Fox with Patch 1

随着 AS Arctic Fox Jetpack Compose 的第一个补丁,预览停止工作。

我在 所有 预览中遇到此错误 - 甚至是较旧的预览,前一段时间运行良好:

android.content.res.Resources$NotFoundException: Could not resolve resource value: [some hex value]

这里有什么快速修复方法吗?清除缓存和通常的东西不起作用。


编辑:
看起来问题并不总是存在。一些预览开始工作,而其他的仍然失败。

编辑 2:
这发生在动态功能模块中,当需要来自主模块的资源或正在使用 painterResource() 时(即使要显示来自同一模块的资源)。

这已在 AS Bumblebee 补丁 2 中修复。

作为临时解决方法,我这样做是为了克服错误并预览 UI 元素。

//import androidx.compose.ui.res.stringResource

fun stringResource(id: Int): String {
    when (id) {
        R.string.res_id -> return "Foo"
        ...
    }
    return "missing res_id"
}

动态模块项目也有同样的问题。 受上述答案的启发,我在等待 Compose 团队修复此问题时做了另一个临时解决方法

import androidx.compose.ui.res.stringResource as originalStringResource

@Composable
@ReadOnlyComposable
fun stringResourceSafe(@StringRes id: Int): String =
    if (BuildConfig.DEBUG) {
        val resources = LocalContext.current.resources
        try {
            resources.getString(id)
        } catch (e: Resources.NotFoundException) {
            "missing res."
        }
    } else {
        originalStringResource(id)
    }