Karen Frangulyan
03/16/2022, 12:15 PMExecution failed for task ':shared:iosSimulatorArm64Test'.
...
Caused by: java.util.NoSuchElementException: No value present
and it says 'Test events were not received' in the UI. The same task ./gradlew :shared:iosSimulatorArm64Test
runs without problems from terminal.
Any ideas?Francis Mariano
03/16/2022, 1:32 PMStefan Oltmann
03/16/2022, 5:07 PMassembleXCFramework
task. I see in the docs that there should be also assembleDebugXCFramework
and assembleReleaseXCFramework
tasks, but I don't see them... How can I only build the release version? I don't need debug.Stefan Oltmann
03/17/2022, 9:49 AMcompileKotlinMetadata
?
I set org.gradle.parallel=true
in settings and even call it with --parallel, but this tasks takes 3 minutes for me - even on a beefy M1 Pro
(8 performance cores) it tooks as long as on an M1.
So this tasks does not benefit from more cores...
What can I do to cut down compiling time here?Martin Rajniak
03/17/2022, 10:17 AMembedAndSignAppleFrameworkForXcode
It seems that signing config needs to be defined in XCode project file for it to work, and we do not need it for iOS application - just for the shared framework.
So I wondered whether it can be turned off.Francis Mariano
03/17/2022, 11:30 AMankushg
03/17/2022, 7:03 PMkotlinx.serialization
vs Jackson/Moshi, kotlinx.coroutines
vs RxJava)
But I also feel like there are some slightly more advanced topics like increasing modularization to isolate code that’s already platform agnostic (or close to it) into a separate Gradle module so you can start KMP-ifying it without doing something like fully migrating off of RxJava if you’re using it
I feel like I have an intuitive sense for most of this, but am looking for something to send over to some coworkers who’re working on backend services where they eventually want some parts to be able to run client-side via KMPDaeyoung Kim
03/18/2022, 1:16 PM```...
iosSimulatorArm64()
cocoapods {
summary = "Some description for the Shared Module"
homepage = "Link to the Shared Module homepage"
ios.deploymentTarget = "14.1"
podfile = project.file("../iosApp/Podfile")
framework {
baseName = "shared"
}
pod("GoogleWebRTC", moduleName = "WebRTC")
}
sourceSets {```Anybody knows why this happens?
Grégory Lureau
03/18/2022, 4:19 PMsealed class
can actually be instantiated from ObjectiveC! In Kotlin I can't because the constructor is private, but it looks like it's actually exported as public for ObjectiveC (tested on Kotlin 1.6.0).
Is there a reason for that or is it just a bug tracked somewhere ?Marko Novakovic
03/18/2022, 7:28 PMUncaught Kotlin exception: kotlin.IllegalStateException: There is no event loop. Use runBlocking { ... } to start one.
Kotlin 1.6.10 and 0.11.3-new-mm https://github.com/rickclephas/KMP-NativeCoroutines (idk if this library has anything to do with it tho)Conrad Kramer
03/19/2022, 6:21 PMnikhil kumar
03/20/2022, 6:52 AMnikhil kumar
03/21/2022, 8:26 AMMarko Novakovic
03/21/2022, 6:04 PM> Task :shared:linkDebugFrameworkIosSimulatorArm64 FAILED
e: Module "io.ktor:ktor-network (io.ktor:ktor-network-iossimulatorarm64)" has a reference to symbol kotlinx.coroutines/SingleThreadDispatcher|null[0]. Neither the module itself nor its dependencies contain such declaration.
This could happen if the required dependency is missing in the project. Or if there is a dependency of "io.ktor:ktor-network (io.ktor:ktor-network-iossimulatorarm64)" that has a different version in the project than the version that "io.ktor:ktor-network (io.ktor:ktor-network-iossimulatorarm64): 1.6.8" was initially compiled with. Please check that the project configuration is correct and has consistent versions of all required dependencies.
I just added dependencies for ktor as per instructions for ktor kmmJose Garcia
03/22/2022, 11:56 AMsettings.gradle
and my project structure?Marc Reichelt
03/22/2022, 1:05 PMXCFramework
task in Gradle to create a framework containing all 3 archs (x86 sim, arm64 sim, arm64 device) using Kotlin 1.6.10. However, when we run ./gradlew :assembleReleaseXCFramework
, it’s compiling the 3 archs sequentially rather than in parallel. Did anyone find a good way to speed this up by running these sequentially?brabo-hi
03/22/2022, 5:31 PMConrad Kramer
03/23/2022, 5:04 PMVivek Modi
03/23/2022, 5:41 PMOKHTTP
client with some`interceptors` and authenticator
and iOS application using alamofire
with interceptors
.Both projects are huge in size. Now I want to use KMM for new api client. So How can I use these 2 http client through Ktor. I don't want to write from scratch in KMM module. Any suggestion?iamsteveholmes
03/24/2022, 2:19 AMdiego-gomez-olvera
03/24/2022, 11:29 AMXCFramework
publication and found an interesting plugin. Something that I am missing is the iOS/Swift project definition of the dependency. Is anyone using it? https://github.com/prof18/kmp-fatframework-cocoaCasey Brooks
03/24/2022, 6:25 PMCasey Brooks
03/25/2022, 5:02 PMios()
target?Matthias Geisler
03/25/2022, 6:51 PMBarry Fawthrop
03/26/2022, 3:36 PMNikky
03/26/2022, 8:29 PMjava.net.ConnectException
in common code?
i cannot define a expect class ConnectException: Exception
because that extends kotlin.Exception
and not the java exception type..
and without that i cannot catch it..
event catch)e: Throwable)
in common code does not catch itConrad Kramer
03/27/2022, 10:38 PMe: java.lang.NullPointerException
at org.jetbrains.kotlin.backend.konan.optimizations.DevirtualizationAnalysis$DevirtualizationAnalysisImpl.calleeAt(DevirtualizationAnalysis.kt:263)
at org.jetbrains.kotlin.backend.konan.optimizations.DevirtualizationAnalysis$DevirtualizationAnalysisImpl.access$calleeAt(DevirtualizationAnalysis.kt:120)
at org.jetbrains.kotlin.backend.konan.optimizations.DevirtualizationAnalysis$DevirtualizationAnalysisImpl$ConstraintGraphBuilder.processVirtualCall(DevirtualizationAnalysis.kt:978)
at org.jetbrains.kotlin.backend.konan.optimizations.DevirtualizationAnalysis$DevirtualizationAnalysisImpl$ConstraintGraphBuilder.checkSupertypes(DevirtualizationAnalysis.kt:1004)
at org.jetbrains.kotlin.backend.konan.optimizations.DevirtualizationAnalysis$DevirtualizationAnalysisImpl$ConstraintGraphBuilder.checkSupertypes(DevirtualizationAnalysis.kt:1011)
Alen Kirm
03/28/2022, 7:52 AMsuspend
method inside Interface
file, and conform to that file on iOS side, KMP-Native-Coroutines
generates 3 versions of that method.
Our example:
Kotlin Interface method:
suspend fun refreshTokenIfNeeded(accessToken: String)
Results into (see attachment below) on iOS and blocks us.
Are there any known issues regarding suspend
methods in signature? Did anybody else face this problem? None of the workarounds seems future proof and could bite back soon.
On modules, where KMP-Native-Coroutines
plugin is not injected, it works fine as expected.
Update:
Looks like marking method with @NativeCoroutinesIgnore
is a working workaround. Is this something worth taking a look at? 🤔Nacho Ruiz Martin
03/28/2022, 10:25 AMStore
for convenience.
Normally on Android (I’m not sure on iOS) this `Store`’s lifecycle is bound to the lifecycle of the screen itself (or navigation subgraph) and there’s one store per feature. But on web (if I’m not mistaken) usually there’s a single Store
and it’s bound to the lifecycle of the whole app. This makes for me sense because usually on web there are a lot of components seen at the same time on screen.
My question is, if we’re sharing the Store
logic between mobile and web, does it make sense to have a single Store
or is it better to have multiple Stores
, one per component? Also, does it make sense to bind that to the screen lifecycle on mobile or keep a single instance for the whole app lifecycle?
I know this is completely subjective, I’m only asking for some advice here! And sorry if the terms are not accurate, I’m only experienced on Android and I don’t really know the best practices on web dev and iOS, just what I read online.
Thanks!Francesco Bonnì
03/28/2022, 2:57 PMFrancesco Bonnì
03/28/2022, 2:57 PM