【发布时间】:2021-08-17 19:42:26
【问题描述】:
我正在尝试将一些 Jetpack Compose 函数分离到另一个库中。
在我的应用模块上,我有
setContent {
MyApplicationTheme {
Surface(color = MaterialTheme.colors.background) {
Greeting()
}
}
}
但是,可组合函数 MyApplicationTheme 来自另一个库
@Composable
fun MyApplicationTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable() () -> Unit) { ... }
它编译得很好。但是当我运行并到达触发MyApplicationTheme的函数时,它会崩溃状态
java.lang.NoSuchMethodError: No static method MyApplicationTheme(ZLkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V in class Lcom/example/based_lib/theme/ThemeKt; or its super classes (declaration of 'com.example.based_lib.theme.ThemeKt' appears in /data/data/com.example.myapplication/code_cache/.overlay/base.apk/classes2.dex)
我有一个示例设计演示崩溃...(只需单击按钮进入 Jetpack Compose 活动,它会崩溃)
https://github.com/elye/issue_android_jetpack_compose_another_library_crash
如果我将 MyApplicationTheme 从 BasedLib 移动到主应用程序,那么一切编译正常。
是否不支持在另一个库中具有可组合函数,或者我需要在库中做一些事情以使可组合函数可以被另一个库使用?
【问题讨论】:
标签: android kotlin android-jetpack-compose