I'm trying to do a project in KMP, however, the app in the Android Version is working like a charm, but the iOS version crashes instantly.
Here is the (50% fully) error generated by xcode. I'm launching the app from xcode because i have some cocoapods dependencies for Maps :
[INFO] [Koin] No Compose Koin context setup, taking default. Use KoinContext(), KoinAndroidContext() or KoinApplication() function to setup or create Koin context and avoid such message.
[DEBUG] [Koin] | << parameters
[DEBUG] [Koin] |- 'com.cdm.janaza.MainViewModel' in 5.529 ms
[INFO] [Koin] No Compose Koin context setup, taking default. Use KoinContext(), KoinAndroidContext() or KoinApplication() function to setup or create Koin context and avoid such message.
[DEBUG] [Koin] |- 'com.cdm.janaza.core.presentation.navigation.NavigationViewModel'...
[DEBUG] [Koin] | >> parameters DefinitionParameters[]
[DEBUG] [Koin] |- ? t:'com.cdm.janaza.core.presentation.navigation.NavigationViewModel' - q:'null' look in injected parameters
[DEBUG] [Koin] | (+) '[Factory: 'com.cdm.janaza.core.presentation.navigation.NavigationViewModel']'
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.BottomBarService'...
[DEBUG] [Koin] | (+) '[Singleton: 'com.cdm.janaza.core.data.service.BottomBarServiceImpl',binds:com.cdm.janaza.core.domain.service.BottomBarService]'
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.BottomBarService' in 0.017 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.AuthenticationService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.AuthenticationService' in 0.004 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.ToastService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.ToastService' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.BottomSheetService'...
[DEBUG] [Koin] | (+) '[Singleton: 'com.cdm.janaza.core.data.service.BottomSheetServiceImpl',binds:com.cdm.janaza.core.domain.service.BottomSheetService]'
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.BottomSheetService' in 0.013 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.PreferencesDataStoreRepository'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.PreferencesDataStoreRepository' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.PrayerService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.PrayerService' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.UserService'...
[DEBUG] [Koin] | (+) '[Singleton: 'com.cdm.janaza.core.data.service.UserServiceImpl',binds:com.cdm.janaza.core.domain.service.UserService]'
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.FirebaseUserRepository'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.FirebaseUserRepository' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.FirebasePrayerRepository'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.FirebasePrayerRepository' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.UserService' in 0.045 ms
[DEBUG] [Koin] | << parameters
[DEBUG] [Koin] |- 'com.cdm.janaza.core.presentation.navigation.NavigationViewModel' in 0.718 ms
null
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1737758409.724080 13511090 config:230] gRPC experiments enabled: call_status_override_on_cancellation, http2_stats_fix, monitoring_experiment, pick_first_new, trace_record_callops, work_serializer_clears_time_cache
11.7.0 - [FirebaseFirestore][I-FST000001] AppCheck failed: 'The operation couldn’t be completed. The attestation provider DeviceCheckProvider is not supported on current platform and OS version.'
[INFO] [Koin] No Compose Koin context setup, taking default. Use KoinContext(), KoinAndroidContext() or KoinApplication() function to setup or create Koin context and avoid such message.
Home
[INFO] [Koin] No Compose Koin context setup, taking default. Use KoinContext(), KoinAndroidContext() or KoinApplication() function to setup or create Koin context and avoid such message.
[DEBUG] [Koin] |- 'com.cdm.janaza.feature_main.presentation.screen.home.HomeViewModel'...
[DEBUG] [Koin] | >> parameters DefinitionParameters[]
[DEBUG] [Koin] |- ? t:'com.cdm.janaza.feature_main.presentation.screen.home.HomeViewModel' - q:'null' look in injected parameters
[DEBUG] [Koin] | (+) '[Factory: 'com.cdm.janaza.feature_main.presentation.screen.home.HomeViewModel']'
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.AuthenticationService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.AuthenticationService' in 0.003 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.PrayerService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.PrayerService' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.OverlayService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.OverlayService' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.PreferencesDataStoreRepository'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.PreferencesDataStoreRepository' in 0.003 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.BottomSheetService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.BottomSheetService' in 0.003 ms
[ERROR] [Koin] * Instance creation error : could not create instance for '[Factory: 'com.cdm.janaza.feature_main.presentation.screen.home.HomeViewModel']': kotlin.NullPointerException[kotlin.Exception]
[DEBUG] [Koin] | << parameters
Uncaught Kotlin exception: org.koin.core.error.InstanceCreationException: Could not create instance for '[Factory: 'com.cdm.janaza.feature_main.presentation.screen.home.HomeViewModel']'
nw_endpoint_flow_failed_with_error [C1 2a00:1450:4006:80d::200a.443 failed parent-flow (unsatisfied (No network route))] already failing, returning
nw_connection_get_connected_socket_block_invoke [C1] Client called nw_connection_get_connected_socket on unconnected nw_connection
TCP Conn 0x600003306760 Failed : error 0:50 [50]
I0000 00:00:1737758409.843337 13511151 subchannel:806] subchannel 0x105745b90 {address=ipv6:%5B2a00:1450:4006:80d::200a%5D:443, args={grpc.client_channel_factory=0x60000002f5f0, grpc.default_authority=firestore.googleapis, grpc.http2_scheme=https, grpc.internal.channel_credentials=0x600002634cc0, grpc.internal.client_channel_call_destination=0x114efb728, grpc.internal.event_engine=0x60000002fa00, grpc.internal.security_connector=0x600002c3bf00, grpc.internal.subchannel_pool=0x600002928cb0, grpc.keepalive_time_ms=30000, grpc.primary_user_agent=grpc-c++/1.65.1, grpc.resource_quota=0x600000ce6130, grpc.server_uri=dns:///firestore.googleapis}}: connect failed (UNKNOWN:(domain:NSPOSIXErrorDomain, code:50, description:The operation couldn’t be completed. Network is down) {grpc_status:2, created_time:"2025-01-24T23:40:09.843187+01:00", file_line:150, file:"/var/folders/hn/5bx1f4_d4ds5vhwhkxc7vdcr0000gn/T/ZipRelease/2024-07-25T04-01-28/project-ios/Pods/gRPC-Core/src/core/lib/transport/error_utils"}), backing off for 989 ms
at 0 Janaza.debug.dylib 0x1100e7797 kfun:kotlin.Exception#<init>(kotlin.String?;kotlin.Throwable?){} + 123
at 1 Janaza.debug.dylib 0x111c2ec4b kfun:org.koin.core.error.InstanceCreationException#<init>(kotlin.String;kotlin.Exception){} + 123
at 2 Janaza.debug.dylib 0x111c30077 kfun:org.koin.core.instance.InstanceFactory#create(org.koin.core.instance.ResolutionContext){}1:0 + 1703
at 3 Janaza.debug.dylib 0x111c2f8a7 kfun:org.koin.core.instance.FactoryInstanceFactory#get(org.koin.core.instance.ResolutionContext){}1:0 + 103
at 4 Janaza.debug.dylib 0x111c4a467 kfun:org.koin.core.instance.InstanceFactory#get(org.koin.core.instance.ResolutionContext){}1:0-trampoline + 67
at 5 Janaza.debug.dylib 0x111c3ac9f kfun:org.koin.core.registry.InstanceRegistry#resolveInstance(org.koin.core.qualifier.Qualifier?;kotlin.reflect.KClass<*>;org.koin.core.qualifier.Qualifier;org.koin.core.instance.ResolutionContext){0§<kotlin.Any?>}0:0? + 343
at 6 Janaza.debug.dylib 0x111c43757 kfun:org.koin.core.scope.Scope.resolveFromRegistry#internal + 323
at 7 Janaza.debug.dylib 0x111c42bb7 kfun:org.koin.core.scope.Scope.resolveFromContext#internal + 1503
at 8 Janaza.debug.dylib 0x111c41f1f kfun:org.koin.core.scope.Scope.stackParametersCall#internal + 871
at 9 Janaza.debug.dylib 0x111c41b6f kfun:org.koin.core.scope.Scope.resolveInstance#internal + 867
at 10 Janaza.debug.dylib 0x111c41547 kfun:org.koin.core.scope.Scope.resolve#internal + 2271
at 11 Janaza.debug.dylib 0x111c40c33 kfun:org.koin.core.scope.Scope#getWithParameters(kotlin.reflect.KClass<*>;org.koin.core.qualifier.Qualifier?;org.koin.core.parameter.ParametersHolder?){0§<kotlin.Any?>}0:0 + 159
at 12 Janaza.debug.dylib 0x111c4d203 kfun:org.koin.viewmodel.factory.KoinViewModelFactory#create(kotlin.reflect.KClass<0:0>;androidx.lifecycle.viewmodel.CreationExtras){0§<androidx.lifecycle.ViewModel>}0:0 + 411
at 13 Janaza.debug.dylib 0x110ecfac7 kfun:androidx.lifecycle.ViewModelProvider.Factory#create(kotlin.reflect.KClass<0:0>;androidx.lifecycle.viewmodel.CreationExtras){0§<androidx.lifecycle.ViewModel>}0:0-trampoline + 115
at 14 Janaza.debug.dylib 0x110ecf213 kfun:androidx.lifecycle.viewmodel#createViewModel(androidx.lifecycle.ViewModelProvider.Factory;kotlin.reflect.KClass<0:0>;androidx.lifecycle.viewmodel.CreationExtras){0§<androidx.lifecycle.ViewModel>}0:0 + 131
at 15 Janaza.debug.dylib 0x110ecb387 kfun:androidx.lifecycle.viewmodel.ViewModelProviderImpl#getViewModel(kotlin.reflect.KClass<0:0>;kotlin.String){0§<androidx.lifecycle.ViewModel>}0:0 + 1163
at 16 Janaza.debug.dylib 0x110ecb5f7 kfun:androidx.lifecycle.viewmodel.ViewModelProviderImpl#getViewModel$default(kotlin.reflect.KClass<0:0>;kotlin.String?;kotlin.Int){0§<androidx.lifecycle.ViewModel>}0:0 + 311
at 17 Janaza.debug.dylib 0x110ecdfdb kfun:androidx.lifecycle.ViewModelProvider#get(kotlin.reflect.KClass<0:0>){0§<androidx.lifecycle.ViewModel>}0:0 + 183
at 18 Janaza.debug.dylib 0x111c4c487 kfun:org.koin.viewmodel#resolveViewModel(kotlin.reflect.KClass<0:0>;androidx.lifecycle.ViewModelStore;kotlin.String?;androidx.lifecycle.viewmodel.CreationExtras;org.koin.core.qualifier.Qualifier?;org.koin.core.scope.Scope;kotlin.Function0<org.koin.core.parameter.ParametersHolder>?){0§<androidx.lifecycle.ViewModel>}0:0 + 711
at 19 Janaza.debug.dylib 0x10fd88da7 kfun:com.cdm.janaza.feature_main.presentation.screen.home#Home(androidxpose.foundation.layout.PaddingValues;kotlin.Function0<kotlin.Unit>;kotlin.Function1<com.cdm.janaza.core.data.model.prayer.Prayer,kotlin.Unit>;androidxpose.runtime.Composer?;kotlin.Int){} + 5899
at 20 Janaza.debug.dylib 0x10fc7cc8f kfun:com.cdm.janaza.core.presentation.navigation.navHost.navGraphBuilder.screen.home$lambda$5#internal + 375
at 21 Janaza.debug.dylib 0x10fc7cea7 kfun:com.cdm.janaza.core.presentation.navigation.navHost.navGraphBuilder.screen.$home$lambda$5$FUNCTION_REFERENCE$2.invoke#internal + 179
at 22 Janaza.debug.dylib 0x10fc7d06f kfun:com.cdm.janaza.core.presentation.navigation.navHost.navGraphBuilder.screen.$home$lambda$5$FUNCTION_REFERENCE$2.$<bridge-DNNNNNU>invoke(androidxpose.animation.AnimatedContentScope;androidx.navigation.NavBackStackEntry;androidxpose.runtime.Composer;kotlin.Int){}#internal + 231
at 23 Janaza.debug.dylib 0x110247873 kfun:kotlin.Function4#invoke(1:0;1:1;1:2;1:3){}1:4-trampoline + 131
at 24 Janaza.debug.dylib 0x1105e84b3 kfun:androidxpose.runtime.internal.ComposableLambdaImpl#invoke(kotlin.Any?;kotlin.Any?;androidxpose.runtime.Composer;kotlin.Int){}kotlin.Any? + 687
at 25 Janaza.debug.dylib 0x1105f605b kfun:androidxpose.runtime.internal.ComposableLambdaImpl#$<bridge-NNNNNNU>invoke(kotlin.Any?;kotlin.Any?;androidxpose.runtime.Composer;kotlin.Int){}kotlin.Any?(kotlin.Any?;kotlin.Any?;androidxpose.runtime.Composer;kotlin.Any?){}kotlin.Any? + 235
at 26 Janaza.debug.dylib 0x110247873 kfun:kotlin.Function4#invoke(1:0;1:1;1:2;1:3){}1:4-trampoline + 131
at 27 Janaza.debug.dylib 0x111c1e3f7 kfun:androidx.navigationpose.NavHost$lambda$41$lambda$40#internal + 659
at 28 Janaza.debug.dylib 0x111c22423 kfun:androidx.navigationpose.$NavHost$lambda$41$lambda$40$FUNCTION_REFERENCE$37.invoke#internal + 119
at 29 Janaza.debug.dylib 0x111c22577 kfun:androidx.navigationpose.$NavHost$lambda$41$lambda$40$FUNCTION_REFERENCE$37.$<bridge-DNNNU>invoke(androidxpose.runtime.Composer;kotlin.Int){}#internal + 159
at 30 Janaza.debug.dylib 0x110239d67 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 115
at 31 Janaza.debug.dylib 0x1105e7d9b kfun:androidxpose.runtime.internal.ComposableLambdaImpl#invoke(androidxpose.runtime.Composer;kotlin.Int){}kotlin.Any? + 607
at 32 Janaza.debug.dylib 0x1105f5e3f kfun:androidxpose.runtime.internal.ComposableLambdaImpl#$<bridge-NNNNU>invoke(androidxpose.runtime.Composer;kotlin.Int){}kotlin.Any?(androidxpose.runtime.Composer;kotlin.Any?){}kotlin.Any? + 163
at 33 Janaza.debug.dylib 0x110239d67 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 115
at 34 Janaza.debug.dylib 0x1104d3097 kfun:androidxpose.runtime#CompositionLocalProvider(androidxpose.runtime.ProvidedValue<*>;kotlin.Function2<androidxpose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidxpose.runtime.Composer?;kotlin.Int){} + 611
at 35 Janaza.debug.dylib 0x110de9abf kfun:androidxpose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider#internal + 2963
at 36 Janaza.debug.dylib 0x110deed37 kfun:androidxpose.runtime.saveable.SaveableStateHolder#SaveableStateProvider(kotlin.Any;kotlin.Function2<androidxpose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidxpose.runtime.Composer?;kotlin.Int){}-trampoline + 123
at 37 Janaza.debug.dylib 0x111c25d5b kfun:androidx.navigationpose.SaveableStateProvider#internal + 1547
at 38 Janaza.debug.dylib 0x111c26673 kfun:androidx.navigationpose.LocalOwnersProvider$lambda$0#internal + 475
at 39 Janaza.debug.dylib 0x111c26a3f kfun:androidx.navigationpose.$LocalOwnersProvider$lambda$0$FUNCTION_REFERENCE$0.invoke#internal + 119
at 40 Janaza.debug.dylib 0x111c26b93 kfun:androidx.navigationpose.$LocalOwnersProvider$lambda$0$FUNCTION_REFERENCE$0.$<bridge-DNNNU>invoke(androidxpose.runtime.Composer;kotlin.Int){}#internal + 159
at 41 Janaza.debug.dylib 0x110239d67 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 115
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidxpose.runtime.BroadcastFrameClock@da805e8, StandaloneCoroutine{Cancelling}@5daf340, FlushCoroutineDispatcher@db00f28]
at 0 Janaza.debug.dylib 0x1100ed6ab kfun:kotlin.Throwable#<init>(kotlin.String?){} + 99
at 1 Janaza.debug.dylib 0x1100e7707 kfun:kotlin.Exception#<init>(kotlin.String?){} + 95
at 2 Janaza.debug.dylib 0x1100e78d7 kfun:kotlin.RuntimeException#<init>(kotlin.String?){} + 95
at 3 Janaza.debug.dylib 0x11036009f kfun:kotlinx.coroutines.internal.DiagnosticCoroutineContextException#<init>(kotlin.coroutines.CoroutineContext){} + 175
at 4 Janaza.debug.dylib 0x110331197 kfun:kotlinx.coroutines.internal#handleUncaughtCoroutineException(kotlin.coroutines.CoroutineContext;kotlin.Throwable){} + 667
at 5 Janaza.debug.dylib 0x1102bab27 kfun:kotlinx.coroutines#handleCoroutineException(kotlin.coroutines.CoroutineContext;kotlin.Throwable){} + 563
at 6 Janaza.debug.dylib 0x1102ae053 kfun:kotlinx.coroutines.StandaloneCoroutine.handleJobException#internal + 167
at 7 Janaza.debug.dylib 0x11036833f kfun:kotlinx.coroutines.JobSupport#handleJobException(kotlin.Throwable){}kotlin.Boolean-trampoline + 59
at 8 Janaza.debug.dylib 0x1102c599b kfun:kotlinx.coroutines.JobSupport.finalizeFinishingState#internal + 1227
at 9 Janaza.debug.dylib 0x1102ce3cb kfun:kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath#internal + 2447
at 10 Janaza.debug.dylib 0x1102cda03 kfun:kotlinx.coroutines.JobSupport.tryMakeCompleting#internal + 755
at 11 Janaza.debug.dylib 0x1102cd50b kfun:kotlinx.coroutines.JobSupport#makeCompletingOnce(kotlin.Any?){}kotlin.Any? + 451
at 12 Janaza.debug.dylib 0x1102aa277 kfun:kotlinx.coroutines.AbstractCoroutine#resumeWith(kotlin.Result<1:0>){} + 203
at 13 Janaza.debug.dylib 0x11023962f kfun:kotlin.coroutines.Continuation#resumeWith(kotlin.Result<1:0>){}-trampoline + 99
at 14 Janaza.debug.dylib 0x1100f2ca3 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} + 1295
at 15 Janaza.debug.dylib 0x11023962f 0xc353ffffffffffff 0x0 + -4371869338269908993
Caused by: kotlin.NullPointerException
at 0 Janaza.debug.dylib 0x1100ed823 kfun:kotlin.Throwable#<init>(){} + 75
at 1 Janaza.debug.dylib 0x1100e7693 kfun:kotlin.Exception#<init>(){} + 67
at 2 Janaza.debug.dylib 0x1100e7863 kfun:kotlin.RuntimeException#<init>(){} + 67
at 3 Janaza.debug.dylib 0x1100e7a33
Here is my Koin setup:
fun initKoin(config: KoinAppDeclaration? = null) {
startKoin {
printLogger(Level.DEBUG)
config?.invoke(this)
modules(
appModule,
sharedRepositoryModule,
viewModelModule
)
}
}
My MainViewController:
fun MainViewController() = ComposeUIViewController(
configure = {
initKoin()
Firebase.initialize()
}
) {
App()
}
My ViewModelModule:
val viewModelModule = module {
viewModelOf(::HomeViewModel)
}
My AppModule:
val appModule = module {
single { Firebase.firestore }
single { Firebase.messaging }
single { Firebase.auth }
single { createHttpClient() }
single(named("pray")) { providePrayerCollection(get()) }
single(named("user")) { provideUserCollection(get()) }
singleOf(::OverlayServiceImpl).bind<OverlayService>()
singleOf(::BottomSheetServiceImpl).bind<BottomSheetService>()
singleOf(::ToastServiceImpl).bind<ToastService>()
singleOf(::BottomBarServiceImpl).bind<BottomBarService>()
singleOf(::AlertDialogServiceImpl).bind<AlertDialogService>()
singleOf(::PrayerServiceImpl).bind<PrayerService>()
singleOf(::UserServiceImpl).bind<UserService>()
singleOf(::AuthenticationServiceImpl).bind<AuthenticationService>()
single<FirebasePrayerRepository>{
FirebasePrayerSourceImpl(
prayerCollection = get(named("pray")),
firebaseMessaging = get(),
firebaseAuth = get()
)
}
single<FirebaseUserRepository>{
FirebaseUserSourceImpl(
userCollection = get(named("user")),
firebaseAuth = get()
)
}
singleOf(::GooglePlacesRepositoryImpl).bind<GooglePlacesRepository>()
singleOf(::PrayersTimeRepositoryImpl).bind<PrayersTimeRepository>()
}
private fun providePrayerCollection(db: dev.gitlive.firebase.firestore.FirebaseFirestore) =
db.collection(if (isDebug) "dev_pray" else "pray")
private fun provideUserCollection(db: dev.gitlive.firebase.firestore.FirebaseFirestore) =
db.collection("user")
I'm trying to do a project in KMP, however, the app in the Android Version is working like a charm, but the iOS version crashes instantly.
Here is the (50% fully) error generated by xcode. I'm launching the app from xcode because i have some cocoapods dependencies for Maps :
[INFO] [Koin] No Compose Koin context setup, taking default. Use KoinContext(), KoinAndroidContext() or KoinApplication() function to setup or create Koin context and avoid such message.
[DEBUG] [Koin] | << parameters
[DEBUG] [Koin] |- 'com.cdm.janaza.MainViewModel' in 5.529 ms
[INFO] [Koin] No Compose Koin context setup, taking default. Use KoinContext(), KoinAndroidContext() or KoinApplication() function to setup or create Koin context and avoid such message.
[DEBUG] [Koin] |- 'com.cdm.janaza.core.presentation.navigation.NavigationViewModel'...
[DEBUG] [Koin] | >> parameters DefinitionParameters[]
[DEBUG] [Koin] |- ? t:'com.cdm.janaza.core.presentation.navigation.NavigationViewModel' - q:'null' look in injected parameters
[DEBUG] [Koin] | (+) '[Factory: 'com.cdm.janaza.core.presentation.navigation.NavigationViewModel']'
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.BottomBarService'...
[DEBUG] [Koin] | (+) '[Singleton: 'com.cdm.janaza.core.data.service.BottomBarServiceImpl',binds:com.cdm.janaza.core.domain.service.BottomBarService]'
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.BottomBarService' in 0.017 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.AuthenticationService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.AuthenticationService' in 0.004 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.ToastService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.ToastService' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.BottomSheetService'...
[DEBUG] [Koin] | (+) '[Singleton: 'com.cdm.janaza.core.data.service.BottomSheetServiceImpl',binds:com.cdm.janaza.core.domain.service.BottomSheetService]'
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.BottomSheetService' in 0.013 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.PreferencesDataStoreRepository'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.PreferencesDataStoreRepository' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.PrayerService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.PrayerService' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.UserService'...
[DEBUG] [Koin] | (+) '[Singleton: 'com.cdm.janaza.core.data.service.UserServiceImpl',binds:com.cdm.janaza.core.domain.service.UserService]'
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.FirebaseUserRepository'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.FirebaseUserRepository' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.FirebasePrayerRepository'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.FirebasePrayerRepository' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.UserService' in 0.045 ms
[DEBUG] [Koin] | << parameters
[DEBUG] [Koin] |- 'com.cdm.janaza.core.presentation.navigation.NavigationViewModel' in 0.718 ms
null
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1737758409.724080 13511090 config.cc:230] gRPC experiments enabled: call_status_override_on_cancellation, http2_stats_fix, monitoring_experiment, pick_first_new, trace_record_callops, work_serializer_clears_time_cache
11.7.0 - [FirebaseFirestore][I-FST000001] AppCheck failed: 'The operation couldn’t be completed. The attestation provider DeviceCheckProvider is not supported on current platform and OS version.'
[INFO] [Koin] No Compose Koin context setup, taking default. Use KoinContext(), KoinAndroidContext() or KoinApplication() function to setup or create Koin context and avoid such message.
Home
[INFO] [Koin] No Compose Koin context setup, taking default. Use KoinContext(), KoinAndroidContext() or KoinApplication() function to setup or create Koin context and avoid such message.
[DEBUG] [Koin] |- 'com.cdm.janaza.feature_main.presentation.screen.home.HomeViewModel'...
[DEBUG] [Koin] | >> parameters DefinitionParameters[]
[DEBUG] [Koin] |- ? t:'com.cdm.janaza.feature_main.presentation.screen.home.HomeViewModel' - q:'null' look in injected parameters
[DEBUG] [Koin] | (+) '[Factory: 'com.cdm.janaza.feature_main.presentation.screen.home.HomeViewModel']'
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.AuthenticationService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.AuthenticationService' in 0.003 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.PrayerService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.PrayerService' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.OverlayService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.OverlayService' in 0.002 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.PreferencesDataStoreRepository'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.repository.PreferencesDataStoreRepository' in 0.003 ms
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.BottomSheetService'...
[DEBUG] [Koin] |- 'com.cdm.janaza.core.domain.service.BottomSheetService' in 0.003 ms
[ERROR] [Koin] * Instance creation error : could not create instance for '[Factory: 'com.cdm.janaza.feature_main.presentation.screen.home.HomeViewModel']': kotlin.NullPointerException[kotlin.Exception]
[DEBUG] [Koin] | << parameters
Uncaught Kotlin exception: org.koin.core.error.InstanceCreationException: Could not create instance for '[Factory: 'com.cdm.janaza.feature_main.presentation.screen.home.HomeViewModel']'
nw_endpoint_flow_failed_with_error [C1 2a00:1450:4006:80d::200a.443 failed parent-flow (unsatisfied (No network route))] already failing, returning
nw_connection_get_connected_socket_block_invoke [C1] Client called nw_connection_get_connected_socket on unconnected nw_connection
TCP Conn 0x600003306760 Failed : error 0:50 [50]
I0000 00:00:1737758409.843337 13511151 subchannel.cc:806] subchannel 0x105745b90 {address=ipv6:%5B2a00:1450:4006:80d::200a%5D:443, args={grpc.client_channel_factory=0x60000002f5f0, grpc.default_authority=firestore.googleapis.com, grpc.http2_scheme=https, grpc.internal.channel_credentials=0x600002634cc0, grpc.internal.client_channel_call_destination=0x114efb728, grpc.internal.event_engine=0x60000002fa00, grpc.internal.security_connector=0x600002c3bf00, grpc.internal.subchannel_pool=0x600002928cb0, grpc.keepalive_time_ms=30000, grpc.primary_user_agent=grpc-c++/1.65.1, grpc.resource_quota=0x600000ce6130, grpc.server_uri=dns:///firestore.googleapis.com}}: connect failed (UNKNOWN:(domain:NSPOSIXErrorDomain, code:50, description:The operation couldn’t be completed. Network is down) {grpc_status:2, created_time:"2025-01-24T23:40:09.843187+01:00", file_line:150, file:"/var/folders/hn/5bx1f4_d4ds5vhwhkxc7vdcr0000gn/T/ZipRelease/2024-07-25T04-01-28/project-ios/Pods/gRPC-Core/src/core/lib/transport/error_utils.cc"}), backing off for 989 ms
at 0 Janaza.debug.dylib 0x1100e7797 kfun:kotlin.Exception#<init>(kotlin.String?;kotlin.Throwable?){} + 123
at 1 Janaza.debug.dylib 0x111c2ec4b kfun:org.koin.core.error.InstanceCreationException#<init>(kotlin.String;kotlin.Exception){} + 123
at 2 Janaza.debug.dylib 0x111c30077 kfun:org.koin.core.instance.InstanceFactory#create(org.koin.core.instance.ResolutionContext){}1:0 + 1703
at 3 Janaza.debug.dylib 0x111c2f8a7 kfun:org.koin.core.instance.FactoryInstanceFactory#get(org.koin.core.instance.ResolutionContext){}1:0 + 103
at 4 Janaza.debug.dylib 0x111c4a467 kfun:org.koin.core.instance.InstanceFactory#get(org.koin.core.instance.ResolutionContext){}1:0-trampoline + 67
at 5 Janaza.debug.dylib 0x111c3ac9f kfun:org.koin.core.registry.InstanceRegistry#resolveInstance(org.koin.core.qualifier.Qualifier?;kotlin.reflect.KClass<*>;org.koin.core.qualifier.Qualifier;org.koin.core.instance.ResolutionContext){0§<kotlin.Any?>}0:0? + 343
at 6 Janaza.debug.dylib 0x111c43757 kfun:org.koin.core.scope.Scope.resolveFromRegistry#internal + 323
at 7 Janaza.debug.dylib 0x111c42bb7 kfun:org.koin.core.scope.Scope.resolveFromContext#internal + 1503
at 8 Janaza.debug.dylib 0x111c41f1f kfun:org.koin.core.scope.Scope.stackParametersCall#internal + 871
at 9 Janaza.debug.dylib 0x111c41b6f kfun:org.koin.core.scope.Scope.resolveInstance#internal + 867
at 10 Janaza.debug.dylib 0x111c41547 kfun:org.koin.core.scope.Scope.resolve#internal + 2271
at 11 Janaza.debug.dylib 0x111c40c33 kfun:org.koin.core.scope.Scope#getWithParameters(kotlin.reflect.KClass<*>;org.koin.core.qualifier.Qualifier?;org.koin.core.parameter.ParametersHolder?){0§<kotlin.Any?>}0:0 + 159
at 12 Janaza.debug.dylib 0x111c4d203 kfun:org.koin.viewmodel.factory.KoinViewModelFactory#create(kotlin.reflect.KClass<0:0>;androidx.lifecycle.viewmodel.CreationExtras){0§<androidx.lifecycle.ViewModel>}0:0 + 411
at 13 Janaza.debug.dylib 0x110ecfac7 kfun:androidx.lifecycle.ViewModelProvider.Factory#create(kotlin.reflect.KClass<0:0>;androidx.lifecycle.viewmodel.CreationExtras){0§<androidx.lifecycle.ViewModel>}0:0-trampoline + 115
at 14 Janaza.debug.dylib 0x110ecf213 kfun:androidx.lifecycle.viewmodel#createViewModel(androidx.lifecycle.ViewModelProvider.Factory;kotlin.reflect.KClass<0:0>;androidx.lifecycle.viewmodel.CreationExtras){0§<androidx.lifecycle.ViewModel>}0:0 + 131
at 15 Janaza.debug.dylib 0x110ecb387 kfun:androidx.lifecycle.viewmodel.ViewModelProviderImpl#getViewModel(kotlin.reflect.KClass<0:0>;kotlin.String){0§<androidx.lifecycle.ViewModel>}0:0 + 1163
at 16 Janaza.debug.dylib 0x110ecb5f7 kfun:androidx.lifecycle.viewmodel.ViewModelProviderImpl#getViewModel$default(kotlin.reflect.KClass<0:0>;kotlin.String?;kotlin.Int){0§<androidx.lifecycle.ViewModel>}0:0 + 311
at 17 Janaza.debug.dylib 0x110ecdfdb kfun:androidx.lifecycle.ViewModelProvider#get(kotlin.reflect.KClass<0:0>){0§<androidx.lifecycle.ViewModel>}0:0 + 183
at 18 Janaza.debug.dylib 0x111c4c487 kfun:org.koin.viewmodel#resolveViewModel(kotlin.reflect.KClass<0:0>;androidx.lifecycle.ViewModelStore;kotlin.String?;androidx.lifecycle.viewmodel.CreationExtras;org.koin.core.qualifier.Qualifier?;org.koin.core.scope.Scope;kotlin.Function0<org.koin.core.parameter.ParametersHolder>?){0§<androidx.lifecycle.ViewModel>}0:0 + 711
at 19 Janaza.debug.dylib 0x10fd88da7 kfun:com.cdm.janaza.feature_main.presentation.screen.home#Home(androidx.compose.foundation.layout.PaddingValues;kotlin.Function0<kotlin.Unit>;kotlin.Function1<com.cdm.janaza.core.data.model.prayer.Prayer,kotlin.Unit>;androidx.compose.runtime.Composer?;kotlin.Int){} + 5899
at 20 Janaza.debug.dylib 0x10fc7cc8f kfun:com.cdm.janaza.core.presentation.navigation.navHost.navGraphBuilder.screen.home$lambda$5#internal + 375
at 21 Janaza.debug.dylib 0x10fc7cea7 kfun:com.cdm.janaza.core.presentation.navigation.navHost.navGraphBuilder.screen.$home$lambda$5$FUNCTION_REFERENCE$2.invoke#internal + 179
at 22 Janaza.debug.dylib 0x10fc7d06f kfun:com.cdm.janaza.core.presentation.navigation.navHost.navGraphBuilder.screen.$home$lambda$5$FUNCTION_REFERENCE$2.$<bridge-DNNNNNU>invoke(androidx.compose.animation.AnimatedContentScope;androidx.navigation.NavBackStackEntry;androidx.compose.runtime.Composer;kotlin.Int){}#internal + 231
at 23 Janaza.debug.dylib 0x110247873 kfun:kotlin.Function4#invoke(1:0;1:1;1:2;1:3){}1:4-trampoline + 131
at 24 Janaza.debug.dylib 0x1105e84b3 kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#invoke(kotlin.Any?;kotlin.Any?;androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any? + 687
at 25 Janaza.debug.dylib 0x1105f605b kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#$<bridge-NNNNNNU>invoke(kotlin.Any?;kotlin.Any?;androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any?(kotlin.Any?;kotlin.Any?;androidx.compose.runtime.Composer;kotlin.Any?){}kotlin.Any? + 235
at 26 Janaza.debug.dylib 0x110247873 kfun:kotlin.Function4#invoke(1:0;1:1;1:2;1:3){}1:4-trampoline + 131
at 27 Janaza.debug.dylib 0x111c1e3f7 kfun:androidx.navigation.compose.NavHost$lambda$41$lambda$40#internal + 659
at 28 Janaza.debug.dylib 0x111c22423 kfun:androidx.navigation.compose.$NavHost$lambda$41$lambda$40$FUNCTION_REFERENCE$37.invoke#internal + 119
at 29 Janaza.debug.dylib 0x111c22577 kfun:androidx.navigation.compose.$NavHost$lambda$41$lambda$40$FUNCTION_REFERENCE$37.$<bridge-DNNNU>invoke(androidx.compose.runtime.Composer;kotlin.Int){}#internal + 159
at 30 Janaza.debug.dylib 0x110239d67 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 115
at 31 Janaza.debug.dylib 0x1105e7d9b kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any? + 607
at 32 Janaza.debug.dylib 0x1105f5e3f kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#$<bridge-NNNNU>invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any?(androidx.compose.runtime.Composer;kotlin.Any?){}kotlin.Any? + 163
at 33 Janaza.debug.dylib 0x110239d67 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 115
at 34 Janaza.debug.dylib 0x1104d3097 kfun:androidx.compose.runtime#CompositionLocalProvider(androidx.compose.runtime.ProvidedValue<*>;kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidx.compose.runtime.Composer?;kotlin.Int){} + 611
at 35 Janaza.debug.dylib 0x110de9abf kfun:androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider#internal + 2963
at 36 Janaza.debug.dylib 0x110deed37 kfun:androidx.compose.runtime.saveable.SaveableStateHolder#SaveableStateProvider(kotlin.Any;kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidx.compose.runtime.Composer?;kotlin.Int){}-trampoline + 123
at 37 Janaza.debug.dylib 0x111c25d5b kfun:androidx.navigation.compose.SaveableStateProvider#internal + 1547
at 38 Janaza.debug.dylib 0x111c26673 kfun:androidx.navigation.compose.LocalOwnersProvider$lambda$0#internal + 475
at 39 Janaza.debug.dylib 0x111c26a3f kfun:androidx.navigation.compose.$LocalOwnersProvider$lambda$0$FUNCTION_REFERENCE$0.invoke#internal + 119
at 40 Janaza.debug.dylib 0x111c26b93 kfun:androidx.navigation.compose.$LocalOwnersProvider$lambda$0$FUNCTION_REFERENCE$0.$<bridge-DNNNU>invoke(androidx.compose.runtime.Composer;kotlin.Int){}#internal + 159
at 41 Janaza.debug.dylib 0x110239d67 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 115
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.runtime.BroadcastFrameClock@da805e8, StandaloneCoroutine{Cancelling}@5daf340, FlushCoroutineDispatcher@db00f28]
at 0 Janaza.debug.dylib 0x1100ed6ab kfun:kotlin.Throwable#<init>(kotlin.String?){} + 99
at 1 Janaza.debug.dylib 0x1100e7707 kfun:kotlin.Exception#<init>(kotlin.String?){} + 95
at 2 Janaza.debug.dylib 0x1100e78d7 kfun:kotlin.RuntimeException#<init>(kotlin.String?){} + 95
at 3 Janaza.debug.dylib 0x11036009f kfun:kotlinx.coroutines.internal.DiagnosticCoroutineContextException#<init>(kotlin.coroutines.CoroutineContext){} + 175
at 4 Janaza.debug.dylib 0x110331197 kfun:kotlinx.coroutines.internal#handleUncaughtCoroutineException(kotlin.coroutines.CoroutineContext;kotlin.Throwable){} + 667
at 5 Janaza.debug.dylib 0x1102bab27 kfun:kotlinx.coroutines#handleCoroutineException(kotlin.coroutines.CoroutineContext;kotlin.Throwable){} + 563
at 6 Janaza.debug.dylib 0x1102ae053 kfun:kotlinx.coroutines.StandaloneCoroutine.handleJobException#internal + 167
at 7 Janaza.debug.dylib 0x11036833f kfun:kotlinx.coroutines.JobSupport#handleJobException(kotlin.Throwable){}kotlin.Boolean-trampoline + 59
at 8 Janaza.debug.dylib 0x1102c599b kfun:kotlinx.coroutines.JobSupport.finalizeFinishingState#internal + 1227
at 9 Janaza.debug.dylib 0x1102ce3cb kfun:kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath#internal + 2447
at 10 Janaza.debug.dylib 0x1102cda03 kfun:kotlinx.coroutines.JobSupport.tryMakeCompleting#internal + 755
at 11 Janaza.debug.dylib 0x1102cd50b kfun:kotlinx.coroutines.JobSupport#makeCompletingOnce(kotlin.Any?){}kotlin.Any? + 451
at 12 Janaza.debug.dylib 0x1102aa277 kfun:kotlinx.coroutines.AbstractCoroutine#resumeWith(kotlin.Result<1:0>){} + 203
at 13 Janaza.debug.dylib 0x11023962f kfun:kotlin.coroutines.Continuation#resumeWith(kotlin.Result<1:0>){}-trampoline + 99
at 14 Janaza.debug.dylib 0x1100f2ca3 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} + 1295
at 15 Janaza.debug.dylib 0x11023962f 0xc353ffffffffffff 0x0 + -4371869338269908993
Caused by: kotlin.NullPointerException
at 0 Janaza.debug.dylib 0x1100ed823 kfun:kotlin.Throwable#<init>(){} + 75
at 1 Janaza.debug.dylib 0x1100e7693 kfun:kotlin.Exception#<init>(){} + 67
at 2 Janaza.debug.dylib 0x1100e7863 kfun:kotlin.RuntimeException#<init>(){} + 67
at 3 Janaza.debug.dylib 0x1100e7a33
Here is my Koin setup:
fun initKoin(config: KoinAppDeclaration? = null) {
startKoin {
printLogger(Level.DEBUG)
config?.invoke(this)
modules(
appModule,
sharedRepositoryModule,
viewModelModule
)
}
}
My MainViewController:
fun MainViewController() = ComposeUIViewController(
configure = {
initKoin()
Firebase.initialize()
}
) {
App()
}
My ViewModelModule:
val viewModelModule = module {
viewModelOf(::HomeViewModel)
}
My AppModule:
val appModule = module {
single { Firebase.firestore }
single { Firebase.messaging }
single { Firebase.auth }
single { createHttpClient() }
single(named("pray")) { providePrayerCollection(get()) }
single(named("user")) { provideUserCollection(get()) }
singleOf(::OverlayServiceImpl).bind<OverlayService>()
singleOf(::BottomSheetServiceImpl).bind<BottomSheetService>()
singleOf(::ToastServiceImpl).bind<ToastService>()
singleOf(::BottomBarServiceImpl).bind<BottomBarService>()
singleOf(::AlertDialogServiceImpl).bind<AlertDialogService>()
singleOf(::PrayerServiceImpl).bind<PrayerService>()
singleOf(::UserServiceImpl).bind<UserService>()
singleOf(::AuthenticationServiceImpl).bind<AuthenticationService>()
single<FirebasePrayerRepository>{
FirebasePrayerSourceImpl(
prayerCollection = get(named("pray")),
firebaseMessaging = get(),
firebaseAuth = get()
)
}
single<FirebaseUserRepository>{
FirebaseUserSourceImpl(
userCollection = get(named("user")),
firebaseAuth = get()
)
}
singleOf(::GooglePlacesRepositoryImpl).bind<GooglePlacesRepository>()
singleOf(::PrayersTimeRepositoryImpl).bind<PrayersTimeRepository>()
}
private fun providePrayerCollection(db: dev.gitlive.firebase.firestore.FirebaseFirestore) =
db.collection(if (isDebug) "dev_pray" else "pray")
private fun provideUserCollection(db: dev.gitlive.firebase.firestore.FirebaseFirestore) =
db.collection("user")
Share
Improve this question
edited Jan 24 at 23:32
Mehdi.ncb
asked Jan 24 at 22:54
Mehdi.ncbMehdi.ncb
3525 silver badges18 bronze badges
2
- 1 Please edit your question to replace the error message with the full stacktrace. – tyg Commented Jan 24 at 23:14
- I've updated my message. – Mehdi.ncb Commented Jan 24 at 23:32
1 Answer
Reset to default 0i found the problem.
I was using context(viewModelScope) with context-receiver, and it doesn't work with Koin. Either it doesn't work for the moment, either there is a special setup i didn't found !