当前位置: 首页 > 知识库问答 >
问题:

Kotlin多平台项目中与Compose共享活动

武元白
2023-03-14

我在设置一个活动时遇到了问题,该活动驻留在KMM项目中的共享代码中,并使用Jetpack Compose。当活动是在Android源代码(/app)中时,这个操作很好。但我想发布一个共享的(/common)库,而不需要任何应用程序。

    null

进程:com.surrus.peopleinspace,pid:4067 java.lang.nosuchmethoderror:没有静态方法setcontent$default(landroidx/activity/componentactivity;landroidx/compose/runtime/compositioncontext;lkotlin/jvm/functions/function0;iljava/lang/object;)类landroidx/activity/compose/componentactivitykt中的V;或其超级类(“AndroidX.Activity.Compose.ComponentActivityKT”的声明出现在/data/app/com.surrus.PeopleInspace-8p35dcwzn9_g-xn9ydwfra==/base.apk中)的com.surrus.Android.SharedActivity.onCreate(SharedActivity.kt:12)

我尝试添加这里描述的选项https://developer.android.com/jetpack/compose/setup#configure_gradle,但是

  • 不能全部添加到公共模块(KotlinOptions?)
  • 在原始项目中,它们不是必需的,而且工作非常好
  • 在以不同的组合添加了其中的几个之后,它甚至不会编译(异常:java.lang.NoClassDeffounderRor:org/jetbrains/kotlin/serialization/descriptorSerializerPlugin at java.base/java.lang.ClassLoader.DefineClass1(本机方法))

我该怎么做才能使它起作用?如有任何帮助,我们将不胜感激。

共有1个答案

游高杰
2023-03-14

所需的更改是添加org.jetbrains.compose插件。

基于IDEA(而不是Android Studio)模板,使用Compose Jetpack创建多平台项目Compose for Desktop(实验性)->多平台使用Kotlin 1.4.30

项目build.gradle.kts

buildscript {
    repositories {
        gradlePluginPortal()
    }
}

...

allprojects{
    ...
    maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") }
}
plugins{
    ...
    id("org.jetbrains.compose") version "0.3.1"
}

AS版本2020.3.1 Canary 15&IDEA版本社区2021.1

谢谢John O'Reilly!

 类似资料:
  • 在KMM中是否可以有一些期望的抽象类?该项目是AndroidiOS 我希望有一些共享类,但部分方法应该是特定于平台的。 最好的方法是什么?也许是预期类和实际类的共享父类的某种组合? 例如, 据我所知,这样的例子是不可能的,因为预期的类应该是接口而不是抽象类。 对于两种平台,resetTimer方法可能相同。 不知怎么可能?

  • 第一个问题是它只与Android StudioCanary X一起工作。 Android Studio 4.2 Beta 6 Jetpack Compose是一个预览功能,对Compose的支持仅包含在Android Studio的Canary版本中。要在应用程序项目中使用Compose,请下载并安装IDE的最新Canary版本。 null null null null 错误(发出/KT-4394

  • 我试图在一个Kotlin多平台移动项目的共享代码中实现一个计时器功能。计时器将运行n秒,每秒它将回调以更新UI。而且,UI中的一个按钮可以取消计时器。这不可避免地意味着我必须开始某种新线程,我的问题是哪一种机制是合适的--工人、关联者还是其他什么? 我尝试使用带有以下代码的coroutine,但在IOS上遇到了InvalidMutabilityException: 我确实了解moko-time库,

  • 报告工作的groovy代码是: 这将如何翻译成Kotlin DSL?我尝试了许多变体,其中一些编译和运行,但不创建所需的输出。可运行的罐子。

  • 问题内容: 我有多个具有相似构建步骤的项目,并且我正在研究在这些项目中重用Jenkinsfile管道。我很难找到有关如何实现这样的标准(我认为)设置的文档。 这是我的要求: 1)Jenkinsfile存储在回购中,在多个项目之间共享 2)每个项目都有其自己的参数:项目在仓库中的位置。 3)至少从用户角度来看,每个项目在Jenkins中都应独立,这意味着,例如,执行和日志可在Jenkins中的每个项