我无法在 Android Studio 中对 Swift 代码设置断点。我认为 KMM 插件允许这样做。有什么办法可以实现这一点吗?
如何在 iOS 中调试我的 iOS UI + 共享业务逻辑?
我正在尝试在 Android Studio 中运行由 Kotlin 多平台移动插件生成的初始示例应用程序。我按照以下步骤进行环境设置。Android模拟器运行正常,但iPhone模拟器无法运行。运行配置有以下错误:
Error: Selected scheme "iosApp" does not support "iphonesimulator"
Run Code Online (Sandbox Code Playgroud)
当我运行配置(忽略错误)时,iPhone 模拟器确实会打开并且似乎会加载 iOS,但它永远不会加载 Android Studio 中的“Hello,iOS”应用程序。
什么会导致这种情况呢?
版本信息:
我们目前如何从 swift收集Flow?
通过在 Swift流的collect方法中对 Kotlin 的挂起函数的新支持,可以在 swift 中获得这个相当笨重的签名
vm.topStoriesFlow.collect(
collector: Kotlinx_coroutines_coreFlowCollector,
completionHandler: @escaping (KotlinUnit?, Error?) -> Void
)
Run Code Online (Sandbox Code Playgroud)
知道如何使用它,或者即使当前支持它的使用吗?
kotlin kotlin-native kotlin-multiplatform kotlin-coroutines kotlin-flow
我们想将我们的应用程序从 Room 迁移到 SQLDelight,以便在 iOS 上重用它(这是一个多平台项目)。但是我注意到 SQLDelight 比 Room 慢得多。对于某些查询,它大约慢 10 倍。我对插入语句进行了一些深入测试,Room 平均需要约 5 毫秒,SQLDelight 平均需要约 25 毫秒。我检查(并调整)了查询,使它们完全相同。
我还检查了一些 PRAGMA,发现 SQLDelight 使用 Pragma SYNCHRONOUS=1 (NORMAL) 而 Room 使用 2 (FULL) 而 SQLDelight 使用 JOURNAL_MODE=TRUNCATE 而 Room 使用 WAL。我将 SQLDelight 设置中的这些设置更改为等于 Room 并且性能有所提高,但对于上述测试仍然约为 20 毫秒。
有谁知道导致差异的原因是什么?任何帮助表示赞赏。
我正在 kotlin 多平台上创建我的第一个应用程序,并且需要获取一些设备的信息,例如语言和国家/地区。
我正在寻找一种使用 Kotlin 多平台在 Android 和 iOS 两种设备上运行的方法。
有可能的?或者只能在两种设备上以本机方式进行此操作?
我正在尝试将一些业务逻辑从我的 iOS 应用程序转移到 KMM。当突然开始在工作室遇到问题时,我已经做了一些工作。它没有构建,有奇怪的metaspace错误等。老实说,我在我的项目周围跳动了几个小时和几天 - 没有结果。我决定完全卸载工作室及其所有相关文件。
在那之后,我什至无法正确构建一个空的 KMM 项目。简单的 Android 项目工作得很好。只有 KMM 才会出现问题。当我第一次创建项目时,它已成功加载,下载所有依赖项并同步。我能够看到“Android”项目结构。我试图通过./gradlew build- 错误来构建它。没有完整的描述,只有失败任务的名称 - compile kotlin to ios arm64。一个全新项目中的错误。我尝试重建项目 - 没有运气。所以我重新启动了工作室,魔法的第二部分开始了。
从这一刻起,每当我打开一个新的或现有的 KMM 项目时,它就会开始同步并卡住。例如,我无法打开项目结构,因为同步正在进行,我无法添加依赖项,因为同步正在进行。但是我可以通过./gradlew build它来构建它并且它会构建!好吧,我尝试了更多命令,例如./gradlew -refresh-dependencies等。它构建成功。然后在某个时候所有的代码都变成了红色。下面你可以同时看到Android Studio的所有颜色:
在终端中,您可以看到它已成功构建。在右下角,您可以看到它不允许进入项目结构,因为正在进行同步。最美丽的是所有未解决的符号。
我相信我已经尝试了大部分 Android Studio 的东西:
./gradlew clean build伙计们,您有什么想法可以让工作室只与 KMM 一起工作吗?然后我应该如何让它继续工作?正如我已经说过的,问题不是特定于工作室的,而是特定于 KMM 的,因为常规的 android 项目构建得很好。
安卓工作室 4.1.2
Mac OS 大苏尔 11.2
Kotlin 1.4.30-release-Studio4.1-1
android kotlin android-studio kotlin-native kotlin-multiplatform
我正在尝试制作一个可在 Android、JavaScript 和 iOS 中使用的 Kotlin 多平台库。该库由多个模块组成,因此可以轻松扩展。我现在的问题只与 Kotlin 原生有关。
:commonobject MySingleton {
fun doSomethingWithMyInterface(value: MyInterface) {
// ...
}
}
interface MyInterface {
fun doSomething()
}
Run Code Online (Sandbox Code Playgroud)
MyInterfaceclass MyInterfaceExample : MyInterface {
override fun doSomething() {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我已将build.gradle.kts文件设置:common如下:
plugins {
kotlin("multiplatform")
kotlin("native.cocoapods")
id("maven-publish")
}
kotlin {
targets {
jvm()
js().browser()
ios("ios") {
binaries {
framework("CommonModule") {
baseName = "common"
}
}
}
}
cocoapods {
frameworkName = "CommonModule"
summary …Run Code Online (Sandbox Code Playgroud) 所以我是 Kotlin Multiplatform Mobile 和一般移动开发的新手。我正在尝试按照KMM 教程中的本教程在我的项目中使用 Ktor。
添加依赖后,如下图build.gradle.kts(commonMain、androidMain、iosMain的依赖):
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
plugins {
kotlin("multiplatform")
id("com.android.library")
}
kotlin {
android()
ios {
binaries {
framework {
baseName = "shared"
}
}
}
val ktorVersion = "1.5.2"
sourceSets {
val commonMain by getting {
dependencies {
implementation("io.ktor:ktor-client-core:$ktorVersion")
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
}
}
val androidMain by getting {
dependencies {
implementation ("io.ktor:ktor-client-android:$ktorVersion")
}
}
val androidTest by getting {
dependencies {
implementation(kotlin("test-junit"))
implementation("junit:junit:4.13")
} …Run Code Online (Sandbox Code Playgroud) kotlin android-gradle-plugin ktor kotlin-multiplatform ktor-client
我有一个 AndrodiStudio KMM 项目,我想添加一个 JS 目标。
鉴于 JS 开发仅在 IntelliJ 中可用,我希望我必须在 IDEA 中打开项目添加一个“模块”——但我什至不知道选择哪个——它们似乎都不是“正确”适合:
在 Gradle 部分,有“用于浏览器的 Kotlin/JS 和“Kotlin/JVM”。添加“Kotlin/JS”会破坏*整个项目的 Gradle 构建。“Kotlin/Multiplatform”听起来不像我想要的我已经有了“共享”模块(虽然它不包括 JS)
在 Kotlin 部分,有“KS | IDEA”。显然,我不想将基于“IDEA 构建系统”的内容添加到基于 gradle.kts 的项目中。
所以我的问题是:
哪个模块模板是在“iosApp”和“androidApp”(在 AndroidStudio 或 Idea 中?)旁边添加“jsApp”(或 webApp)的最佳起点?
我需要向“shared/build.gradle.kts”添加什么来支持“jsMain”和“jsTest”文件夹?是否有不同/更好的起点(例如,Github 上涵盖所有平台的教程或最小的“helloWorld”示例)?
我的代码的当前结构与 Android Studio 中的 KMM 项目模板 1:1 对应:https : //github.com/stefanhaustein/komponents
*) 错误信息:
Error resolving plugin [id: 'org.jetbrains.kotlin.multiplatform', version: '1.4.31']
> Plugin request for plugin already on the classpath must not include a version
Run Code Online (Sandbox Code Playgroud) kotlin ×3
android ×2
android-room ×1
kotlin-flow ×1
kotlin-js ×1
ktor ×1
ktor-client ×1
sqldelight ×1
xcode ×1