Javier
02/08/2025, 3:08 PMgRPC-Swift
and SwiftProtobuf
via Kotlin cocoapods plugin should be trivial, but I am not sure about if I can run protoc and using the same SKIE folder as output directory without breaking SKIE.Javier
02/08/2025, 4:44 PMDavid
02/08/2025, 9:38 PMTadeas Kriz
02/08/2025, 9:39 PMade
02/10/2025, 11:21 AMRaphael TEYSSANDIER
02/11/2025, 1:48 PMMarcel
02/11/2025, 2:32 PMgradle.properties
file as suggested in the docs.
So far we can see the tag being properly used and populated everywhere, however, on the latest step touchlab/ga-update-release-tag@v1
we are getting the following error:
Run touchlab/ga-update-release-tag@v1
Error: From <https://github.com/xxxxxx/xxxxx-kmp>
* [new tag] 0.0.52 -> 0.0.52
You are not currently on a branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
Attaching our github action yml file to see if it helps 🙏audax
02/13/2025, 2:27 PMMarco Signoretto
02/18/2025, 5:15 AMFlow
using SKIE and we are implementing this interface on both Android and iOS, on iOS we are struggling to return the flow from swift side, I have this problematic snippet
func selectedPaymentMethod(paymentReference: KMPMotEngine.PaymentReference) -> KMPMotEngine.SkieSwiftFlow<SelectedPayment> {
let flow = KMPMotEngine.SkieKotlinFlowFactorySkieKotlinFlowFactory<SelectedPayment>().createSkieKotlinSharedFlow(replay: 0, extraBufferCapacity: 0)
Task {
for await value in self.delegate.selectedPaymentMethod(for: paymentReference.asSuperType()).values {
if let value { try await flow.emit(value: value.asKMP(paymentReference: paymentReference)) }
}
}
return KMPMotEngine.SkieSwiftFlow(flow)
}
We are consuming self.delegate.selectedPaymentMethod
which returns an Infallible
however if I use the Task
like this I have no way to call `Task.cancel()`I am not even sure it is even possible, does anyone have faced a similar issue of have any suggestion? it would be nice if somehow I could task.cancel()
when KMPMotEngine.SkieSwiftFlow
deinitsBradleycorn
02/20/2025, 7:38 PMDefaultArgumentInterop
setting enabled.
I get a bunch of errors around undefined KTOR symbols (I use KTOR in my "shared" module for networking).
I can work around the issue, but it's kind of a pain (more info on that in the 🧵)
I filed a github issue about this awhile back on the SKIE repo. I'm still seeing the issue, so I was curious if there is any further info on a fix or an easier work around?Christopher Mederos
02/21/2025, 2:18 AMExpected ComposeNativeViewFactory has no actual declaration in module <composeApp_debug> for JVM
Leo Yamamoto
02/24/2025, 8:02 AMdarwin_log_create
, maybe because it uses Kermit and they both define this symbol: [Kermit] [Canard]. (Full message in thread.)
1. I'm not sure why this only happens with release builds.
2. I'm not sure what changes might have happened in this library or in Kermit that would have made it start having this conflict.Mohammed Akram Hussain
02/28/2025, 12:02 AMBijan Cronin
02/28/2025, 12:57 AM> Task :shared:linkDebugFrameworkIosSimulatorArm64
w: 'var IntelyShared.Ktor_httpHttpStatusCode.description' was renamed to 'var IntelyShared.Ktor_httpHttpStatusCode.description_' because of a name collision with an another declaration 'func IntelyShared.KotlinBase.description() -> Swift.String'. Consider resolving the conflict either by changing the name in Kotlin, or via the @ObjCName annotation. You can also suppress this warning using the 'SuppressSkieWarning.NameCollision' configuration. However using renamed declarations from Swift is not recommended because their name will change if the conflict is resolved.
(at public final val description: kotlin.String defined in io.ktor.http.HttpStatusCode from module <io.ktor:ktor-http>)
John O'Reilly
03/04/2025, 4:47 PMDavid Everlöf
03/05/2025, 1:26 PMChristopher Mederos
03/12/2025, 1:37 AMsiraf
03/20/2025, 4:25 PMkotlin {
cocoapods {
summary = "My Library"
homepage = "github_path_to_the_library"
ios.deploymentTarget = "14.0"
tasks.withType(org.jetbrains.kotlin.gradle.tasks.CInteropProcess::class.java) {
settings.compilerOpts("-DNS_FORMAT_ARGUMENT(A)=")
}
framework {
baseName = "MyLibrary"
}
pod(name = "SQLCipher", version = "4.5.7") // <- HERE
…
}
}
xiaobailong24
03/21/2025, 7:41 AMxcode-kotlin info
show null with Xcode16.2, is there a problem? Thx.Simon Binder
03/21/2025, 9:58 AM<http://libsqlite3.ar|libsqlite3.ar>
by invoking clang through the KMP PlatformManager
and we include that with a cinterops definition having a staticLibraries
option.
3. We then export our project as an xcframework.
I know that our setup generally works because Kotlin tests depending on SQLite pass on all platforms we care about (and I checked with nm
that a copy of SQLite is part of the test executable there). When consuming the exported xcframework on a Swift project on macOS though, we get linker errors about missing symbols like sqlite3_column_database_name
or sqlite3_win32_set_directory
. What all the missing symbols have in common is that they're optional or platform-specific, so they're not enabled by default (column_database_name
needs SQLITE_ENABLE_COLUMN_METADATA
, for example).
From my understanding, the root cause is this:
1. The cinterop setup on SQLiter creates Kotlin functions for all symbols defined in sqlite3.h
.
2. When we test with Kotlin, we compile an executable from which unused symbols are removed by the linker (?), and since we're not calling sqlite3_column_database_name
anywhere, the undefined symbol is never part of the executable.
3. When exporting the library as a framework, the symbols aren't stripped and consumers can't link our framework?
Is there a way for us to fix this by e.g. removing unused symbols when creating the xcframework?Siggi Gunnarss
04/09/2025, 12:18 PMJohn O'Reilly
04/11/2025, 9:59 AMBradleycorn
04/11/2025, 8:00 PMaddGithubPackagesRepository()
method from my plugin, like this:
class UmbrellaModuleConventionPlugin: Plugin<Project> {
override fun apply(target: Project) = with(target) {
with(pluginManager) {
apply(kmpLibs.plugin("touchlab.kmmbridge"))
apply(kmpLibs.plugin("kotlin.cocoapods"))
}
extensions.configure<KotlinMultiplatformExtension>(::configureCocoapods)
addGithubPackagesRepository()
...
}
}
But when I update to 1.2.1, I now get an error:
Unresolved reference: addGithubPackagesRepositoryThe line above that applies the kmmbridge plugin
apply(kmpLibs.plugin("touchlab.kmmbridge"))
is using the "github" version of the plugin:
touchlab-kmmbridge = { id="co.touchlab.kmmbridge.github", version.ref="touchlab-kmmBridge"}
And the gradle config for my plugin module, is using the kmmbridge gradle plugin:
dependencies {
compileOnly(kmpLibs.android.gradlePlugin)
compileOnly(kmpLibs.kotlin.gradlePlugin)
compileOnly(kmpLibs.touchlab.kmmbridge.gradlePlugin)
}
touchlab-kmmbridge-gradlePlugin = { group="co.touchlab.kmmbridge", name="kmmbridge", version.ref= "touchlab-kmmBridge" }
I'm not sure where I'm going wrong???Mohammed Akram Hussain
04/17/2025, 12:27 PMBradleycorn
04/25/2025, 3:00 PMAbhishek Agarwal
04/29/2025, 8:04 AM/.gradlew spmDevBuild
to make the framework and then archive my ios project directly through xcode , I was just wondering is there any way here to make the release version of the framework as AFAIK, this produces a debug version of the Kotlin code.Ismail
04/29/2025, 12:57 PMVita Sokolova
04/30/2025, 11:47 AMCaching disabled for task ':common:publishKotlinMultiplatformPublicationToGitHubPackagesRepository' because:
Not worth caching
Task ':common:publishKotlinMultiplatformPublicationToGitHubPackagesRepository' is not up-to-date because:
Task has not declared any outputs despite executing actions.
Can share with me what should be the reasonable gradle cache configuration for a KMP project?Peter Ringset
05/06/2025, 9:05 AMFlow<Int>
as the type for one of the fields, and that interface when translated to Swift uses SkieSwiftFlow<Int>
. This interface should be implemented by one of my Swift classes. What’s the best/easiest way for the Swift class to create an instance of SkieSwiftFlow<Int>
?brabo-hi
05/08/2025, 7:50 PM