David
06/12/2025, 10:46 AMchristian.steffensen
06/19/2025, 11:10 AMValue of type X has no member Y where X is a class and Y is a suspending function
We also get the error: No exact matches in global call to onEnum
The only thing we have changed recently is updated to Kotlin 2.1.20, where we got a Can't find env_blacklist file error, which was at first fixed by calling ./gradlew commonizeNativeDistribution before building - that fixed the build and the following released worked just fine.
But, now we just made another release and it no longer works on iOS, with the issues mentioned above. On suggestion from KT-72068 we have tried adding kotlin.native.toolchain.enabled=false but that made no difference
Skie 0.10.2
Kotlin 2.1.20
Gradle 8.11.1
The library is built using assembleFramework and publishing it manually to github package registryDaniel Žůrek
06/20/2025, 1:53 PMGitportal . Library files are added to git, running gitportal setup library ... command, even though the library folder is in .gitignore. Resulting in:
The following paths are ignored by one of your .gitignore files:
library
Is this an intentional way of force versioning in android/ios repo? We want to use gitportal for our shared code but we'd like to avoid having the same code mixing in PRs etc.aoriani
07/02/2025, 2:06 AMJohan Reitan
07/03/2025, 3:24 PMdyld[42183]: symbol not found in flat namespace '_FIRCLSExceptionRecordNSException'
This only happens when running tests. I have disabled the native cache, applied the crashkios plugin and also added the linker options manually to no avail:
compilerOptions.freeCompilerArgs.addAll(
"-linker-options",
"-U _FIRCLSExceptionRecordNSException ",
)
What changed?Stylianos Gakis
07/07/2025, 8:14 AMjessewilson
07/08/2025, 7:37 PMAbhishek Agarwal
07/12/2025, 9:37 PM./gradlew spmDevBuild → debug XCFramework with arm64-device, arm64-sim & x86_64-sim
I am able to run the debug version of my app with the generated kMP spm package in any simulator and real device but the release version of the app is running only in real device , when trying to run it in simulator the build fails showing error like
Cannot find type 'SkieSwiftFlow' in the scope
Cannot find files from my Kotlin code....
I use umbrella module technique to build KMPModules , this is how it is configured
listOf(
iosArm64(),
iosSimulatorArm64(),
iosX64()
).forEach {
it.binaries.framework {
export(project(":kmm-analytics"))
export(project(":kmm-util"))
//...other modules
export(libs.resources)
export(libs.androidx.lifecycle.viewmodel)
isStatic = true
baseName = "KMMShared"
}
}Christopher Mederos
07/14/2025, 1:11 AM// Adds the required targetName for the KSP plugin
tasks.withType<com.google.devtools.ksp.gradle.KspTaskNative>().configureEach {
options.add(SubpluginOption("apoption", "compose-swift-bridge.targetName=$target"))
}
// support for generating ksp code in commonCode
// see <https://github.com/google/ksp/issues/567>
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask<*>>().configureEach {
if (name != "kspCommonMainKotlinMetadata") {
dependsOn("kspCommonMainKotlinMetadata")
}
}
Missing subplugin option -
[ksp] java.lang.IllegalArgumentException: Missing compose-swift-bridge.targetName, see docs
Missing task depends on -
Reason: Task ':composeApp:kspKotlinIosSimulatorArm64' uses this output of task ':composeApp:kspCommonMainKotlinMetadata' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed.jessewilson
07/14/2025, 2:16 PM> Task :zipline:iosX64Quickjs FAILED
In file included from /Volumes/Development/zipline/zipline/native/quickjs/quickjs.c:34:
/Applications/Xcode-16.4.0.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.5.sdk/usr/include/math.h:619:27: error: _Float16 is not supported on this target
extern _Float16 __fabsf16(_Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0));
^
I tracked it down thanks to this bug. The fix was straightforward, once I figured out where to put it:
cklib {
config.kotlinVersion = libs.versions.kotlin.get()
create("quickjs") {
language = C
srcDirs = project.files(file("native/quickjs"), file("native/common"))
compilerArgs.addAll(
listOf(
...
"-D_Float16=short", // KT-69094
)
)
}
}Nikky
07/20/2025, 6:26 PM> Task :linkDebugExecutableMingwX64 FAILED
e: C:\Users\nikky\.konan\dependencies\llvm-16.0.0-x86_64-windows-essentials-56/bin/clang++ invocation reported errors
The C:\Users\nikky\.konan\dependencies\llvm-16.0.0-x86_64-windows-essentials-56/bin/clang++ command returned non-zero exit code: 1.
output:
lld: error: unable to find library -lsqlite3
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
i saw that the github CI for this project sets up msys2 with a few packages.. and adds msys2 to the path so i installed that
also tried running it from within mysys2
is there any sample project that uses ideally sqldelight and sqliter on a windows target ?
tried adding the same linkeropts like so
compilations.forEach { kotlinNativeCompilation -> kotlinNativeCompilation.kotlinOptions.freeCompilerArgs += listOf("-linker-options", "-lsqlite3 -Lc:\\msys64\\mingw64\\lib") }
this produces a different set of errors.. mainly a bunch of undefined symbol stuffJohn O'Reilly
08/02/2025, 7:49 AM2.2.20-Beta2 ?Bradleycorn
08/05/2025, 3:32 PMMarkRS
08/06/2025, 3:20 PMBradleycorn
08/07/2025, 1:29 PMspmDevBuld again to produce a new framework with the updated code changes ... right?Bradleycorn
08/15/2025, 3:10 PMaudax
08/21/2025, 7:38 AMJacob Kwitkoski
08/27/2025, 6:30 PM2. should I log a new issue on GitHub for that?touchlab_justin
09/08/2025, 8:38 PMJohn O'Reilly
09/12/2025, 4:04 PMBradleycorn
09/19/2025, 7:12 PMclass MyKotlinClass {
suspend fun doWork() {
// fetch data from an api using ktor
}
}
My ios project is using swift 6.2. I have setup the project in xcode with default actor isolation to use MainActor by default.
My understanding is that swift 6.2 also applies nonisolated(nonsending) as the default on async functions, so if you have some code like this, the async function will be called on the MainActor:
class SwiftClass {
let repoClass: SomeSwiftRepository
func doSwiftThings() async {
try await repoClass.someAyncFunction()
}
}
And indeed this works. I don't see any errors.
However, if I try to use the Kotlin object instead, I get concurrency errors:
class SwiftClass {
let repoClass: MyKotlinClass
func doSwiftThings() async {
try await repoClass.doWork()
}
}
But here's the part I really don't understand. It tells me that
> @concurrent instance method 'doWork() risks causing data races.
I understand why a @concurrent method here would have a risk of data races. What I don't understand is why swift thinks it's @concurrent? It's swift 6.2, shouldn't it use the default nonisolated(nonsending) ? I even enabled the NonisolatedNonsendingByDefault compiler flag to be extra sure. Nowhere in any of the generated headers or code from the kotlin library do I see that doWork is marked as @concurrent. So where is that coming from? And even more confusing, if I remove the NonisolatedNonsendingByDefault compiler flag, then the error changes and tells me that:
> doWork is a "nonisolated instance method".
This confuses me. Like I said, I understand why a @concurrent or nonisolated method call would risk data races. I don't understand why the kotlin method call is getting flagged as such. Concurrency in swift is hard all on its own. Concurrency with Kotlin code running in swift is x10000, and it doesn't help that there's very little documentation (that I can find) about how concurrency interop between kotlin and swift does/doesn't work. Thankfully there is some information in the skie suspend functions documentation about how things work.Alexis
09/25/2025, 12:06 PMlistOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach { target ->
target.binaries.framework {
...
isStatic = true
...
}
But I don't know how to adapt the following script for local SPM integration:
Pods/FirebaseCrashlytics/upload-symbols -gsp ios/GoogleService-Info.plist -p ios ../shared/build/cocoapods/framework/shared.framework.dSYM
I've looked into my module's build folder but couldn't find any .dSYM.Flavio Suardi
10/06/2025, 2:41 PMinterface IBleService {
val connectionState: Flow<ConnectionState>
fun scan(): Flow<Device>
}
When implementing this interface in the iOS project, there’s currently no way to create a SkieSwiftStateFlow (or similar) that can be returned from the connectionState property and the scan() function.
Just like on Android, it would be great to have a mechanism to create flows, something like flow {} or channelFlow {} , or even a proper constructor to instantiate them directly.
The question is essentially related to this discussion: https://github.com/touchlab/SKIE/discussions/54, which unfortunately has not been followed up.
Thank you.kpgalligan
10/09/2025, 5:33 PMJazmine Barroga
10/14/2025, 9:33 AMTepes Lucian Victor
10/17/2025, 7:27 PMFor-in loop requires 'any Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_iosarm64_1_10_2Flow' to conform to 'AsyncSequence' - am I missing something? I know it worked for me in the past.Drake Gebhart
10/18/2025, 5:56 AMimport NSExceptionKtBugsnag. Then I tried Crashkios and I followed the tutorial to the end and it failed on BugsnagConfigKt.startBugsnag(config: config) because it didn't recognize BugsnagConfigKt . I feel like I'm taking crazy pills when they both won't work! Bugsnag works fine and its in the same spot, so I'm pretty confused 😖
I also used a basic CMP project to verify it wasn't anything weird with my configAlexis
10/23/2025, 2:57 PMSanju Naik
10/24/2025, 6:04 AMcommon/src/commonMain but not working for feature modules.
feature modules are added as a dependency on common module using
sourceSets {
val commonMain by getting {
dependencies {
// feature module dependencies.
}
}
}
and they are also exported while generating framework using export() .
This is the command we are running in Xcode run script ./gradlew :common:embedAndSignAppleFrameworkForXcode . Anything we are missing or any additional setup is needed to get breakpoints work for feature modules?Sanju Naik
10/28/2025, 2:37 PMsqlite3 linker errors while building the iOS App which depends on KMP dependency that uses libs.sqldelight.native .
Tried adding -lsqlite3 to Xcode's other linker flags and also passing it as linkerOptions in
listOf(
iosX64(), // Simulator running on Intel based chips.
iosArm64(), // Actual devices running on Apple bionic.
iosSimulatorArm64() // Simulator running on M1 chips.
).forEach { iosTarget ->
iosTarget.binaries.framework {
baseName = "SomeName"
isStatic = true
linkerOpts("-lsqlite3")
}}
But still it didn't help, Any idea on how to solve this?
NOTE: the same setup was working when we were depending on KMM as a cocoapods dependency. Adding linker errors in the thread