Luc*_*hin 8 kotlin-multiplatform android-jetpack-compose
目前是否可以有一个使用 compose 的 kotlin 多平台项目来同时共享桌面、Web 和移动设备的 ui 代码?我发现的所有示例仅涵盖带有 JS Front + Jvm Backend 或 JVM Android + Desktop + Common Module 的多平台,并且我在同时使用所有这些设置项目时遇到了麻烦。
我尝试这样做:
plugins {
kotlin("multiplatform")
id("org.jetbrains.compose") version "1.0.1-rc2"
id("com.android.library")
}
kotlin {
android()
jvm("desktop") {
...
}
js{
...
}
sourceSets {
val commonMain by getting {
dependencies {
...
}
}
val commonTest by getting {
dependencies {
...
}
}
val androidMain by getting {
dependencies {
...
}
}
val androidTest by getting {
dependencies {
...
}
}
val desktopMain by getting {
dependencies {
...
}
}
val desktopTest by getting
val jsMain by getting{
dependencies{
...
}
}
val jsTest by getting {
dependencies {
...
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它会产生错误:
:common:jsMain: Could not resolve org.jetbrains.compose.runtime:runtime:1.0.1-rc2.
Required by:
project :common
Run Code Online (Sandbox Code Playgroud)
如果我评论 JS 相关部分它可以工作,或者如果我评论所有非 js 相关内容它也可以工作
评论所有与撰写相关的内容也有效
问题仅在于将所有内容结合起来时
简短的回答是:不,目前这是不可能的。
JB 团队正在致力于此类支持,可以在这些示例中进行测试,但目前它还处于实验阶段,不能保证很快就会发布。Compose JB 版本现已与 Android Compose 同步,因此我预计两者将在同一时间发布1.2.0 ,即使 Web 支持尚未完成。
我无法重现您的错误,但我假设您尚未从常见依赖项中删除compose.foundation和。compose.material
目前,仅compose.runtime适用于公共模块,这使得此时几乎不可能进行任何布局:甚至Button和Text都不可用。
正如您在 JS 应用程序示例中看到的,Text不是从 导入的androidx.compose.material.Text,而是从 导入的org.jetbrains.compose.web.dom.Text,这是一个完全不同的元素,因此它不能在公共模块中使用。
在这一点上,我想说 Compose JS 是另一个允许你以 Compose 风格编写 UI 的框架。
Jetbrains 使用一些示例更新了 github 存储库:
https://github.com/JetBrains/compose-jb/tree/master/experimental/examples
现在可以使用版本“1.2.0-alpha01-dev675”,但并非所有组件都可以工作,并且仍处于早期的 alpha 阶段。
| 归档时间: |
|
| 查看次数: |
5655 次 |
| 最近记录: |