Jim Tore Oshaug
02/15/2026, 6:16 PM> Task :composeApp:compileAndroidMain
w: [Koin-FIR] Exporting @single SyncManagerImpl for cross-module discovery
w: [Koin-FIR] Exporting @single ArtistRepositoryImpl for cross-module discovery
w: [Koin-FIR] Exporting @single DayRepositoryImpl for cross-module discovery
w: [Koin-FIR] Exporting @single FestivalRepositoryImpl for cross-module discovery
w: [Koin-FIR] Exporting @single PersistenceRepositoryImpl for cross-module discovery
w: [Koin-FIR] Exporting @single RemoteRepositoryImpl for cross-module discovery
w: [Koin-FIR] Exporting @single SetRepositoryImpl for cross-module discovery
w: [Koin-FIR] Exporting @single StageRepositoryImpl for cross-module discovery
w: [Koin-FIR] Exporting @factory SyncFestivalDataUseCase for cross-module discovery
w: [Koin] @Single on function LocationTracker() -> LocationTracker
w: [Koin] @Single on class SyncManagerImpl
w: [Koin] Binds: SyncManager
w: [Koin] @Single on class ArtistRepositoryImpl
w: [Koin] Binds: ArtistRepository
w: [Koin] @Single on class DayRepositoryImpl
w: [Koin] Binds: DayRepository
w: [Koin] @Single on class FestivalRepositoryImpl
w: [Koin] Binds: FestivalRepository
w: [Koin] @Single on class PersistenceRepositoryImpl
w: [Koin] Binds: PersistenceRepository
w: [Koin] @Single on class RemoteRepositoryImpl
w: [Koin] Binds: RemoteRepository
w: [Koin] @Single on class SetRepositoryImpl
w: [Koin] Binds: SetRepository
w: [Koin] @Single on class StageRepositoryImpl
w: [Koin] Binds: StageRepository
w: [Koin] @Module/@ComponentScan on class DatabaseModule
w: [Koin] @Single on function provideFestivalDao() -> FestivalDao
w: [Koin] @Single on function provideDayDao() -> DayDao
w: [Koin] @Single on function provideStageDao() -> StageDao
w: [Koin] @Single on function provideArtistDao() -> ArtistDao
w: [Koin] @Single on function provideArtistSetDao() -> ArtistSetDao
w: [Koin] @Single on function provideSetDao() -> SetDao
w: [Koin] @Single on function provideStageColorDao() -> StageColorDao
w: [Koin] @Single on function provideFestivalColorThemeDao() -> FestivalColorThemeDao
w: [Koin] @Single on function providePersistenceDao() -> PersistenceDao
w: [Koin] @Factory on class SyncFestivalDataUseCase
w: [Koin] DatabaseModule.module() content:
w: [Koin] single: provideFestivalDao() -> FestivalDao
w: [Koin] single: provideDayDao() -> DayDao
w: [Koin] single: provideStageDao() -> StageDao
w: [Koin] single: provideArtistDao() -> ArtistDao
w: [Koin] single: provideArtistSetDao() -> ArtistSetDao
w: [Koin] single: provideSetDao() -> SetDao
w: [Koin] single: provideStageColorDao() -> StageColorDao
w: [Koin] single: provideFestivalColorThemeDao() -> FestivalColorThemeDao
w: [Koin] single: providePersistenceDao() -> PersistenceDao
w: [Koin] Intercepting startKoin<com.jimtj.festivalapp.di.FestivalAppConfig>()
w: [Koin] -> No modules to inject
Just my basic persistence viewmodel for basic app data doesn't load:
@KoinViewModel
class AppViewModel(
private val persistenceRepository: PersistenceRepository,
festivalRepository: FestivalRepository,
private val syncFestivalDataUseCase: SyncFestivalDataUseCase
) : ViewModel() {
I have 5 other viewmodels that it doesn't even get to try loading before I get exceptions about not finding the definition of AppViewModel...arnaud.giuliani
02/16/2026, 5:37 PMgalex
02/17/2026, 8:12 AM@ComponentScan ?Joost Klitsie
02/18/2026, 10:19 AMw: [Koin] Intercepting startKoin<com.jimtj.festivalapp.di.FestivalAppConfig>()
w: [Koin] -> No modules to inject
can this be the issue? You need to have in your main app module this so it scans the stuff in the app module
@Module
@Configuration // so it can be discoverd by the @KoinApplication
@ComponentScan // so it can scan the current package
class AppModule
Then you also need your application:
@KoinApplication
class MyApplication
I noticed for my Android project, that startKoinMyApplication() (or koinConfigurationMyApplicaiton()) should also live in the same gradle module as where you defined the previous 2 so it can intercept it and inject the module into it. If I leave the MyApplication in a shared module, and then do koinConfigurationMyApplication() from my Android application module, it will not find anything to injectarnaud.giuliani
02/18/2026, 12:56 PMarnaud.giuliani
02/18/2026, 12:56 PM