Compatibility with ktorfit/KSP2 later than 2.0.0-Beta3
for
KoinMultiplatformApplication(
config = koinConfiguration { modules(AppModule().module) }
)
Unresolved reference. None of the following candidates is applicable because of a receiver type mismatch:
no KSP generation is done. Check your KSP setup?
After testing with 2.0.0-RC1 I'm having the same issue. On my application, one of my @Module seems to break and does not generate properly (it instead generates a default module). My other modules work just fine.
I'm not able to reproduce the issue on a smaller scale project, so I'm continuing the investigation and I'll keep you updated.
Can you look at what is generated?
2.0.0-Beta3:
package org.koin.ksp.generated
import org.koin.core.module.Module
import org.koin.dsl.*
public val app_vercors_launcher_core_meta_CoreMetaModule : Module get() = module {
single(qualifier=org.koin.core.qualifier.StringQualifier("metaKtorfit")) { _ -> app.vercors.launcher.core.meta.provideMetaKtorfit(httpClient=get(),getProperty("vercorsApiKey"),getProperty("vercorsApiUrl")) } bind(de.jensklingenberg.ktorfit.Ktorfit::class)
single() { _ -> app.vercors.launcher.core.meta.game.provideGameApi(ktorfit=get(qualifier=org.koin.core.qualifier.StringQualifier("metaKtorfit"))) } bind(app.vercors.launcher.core.meta.game.GameApi::class)
single() { _ -> app.vercors.launcher.core.meta.home.provideHomeApi(ktorfit=get(qualifier=org.koin.core.qualifier.StringQualifier("metaKtorfit"))) } bind(app.vercors.launcher.core.meta.home.HomeApi::class)
single() { _ -> app.vercors.launcher.core.meta.loader.provideLoaderApi(ktorfit=get(qualifier=org.koin.core.qualifier.StringQualifier("metaKtorfit"))) } bind(app.vercors.launcher.core.meta.loader.LoaderApi::class)
}
public val app.vercors.launcher.core.meta.CoreMetaModule.module : org.koin.core.module.Module get() = app_vercors_launcher_core_meta_CoreMetaModule
2.0.0-RC1:
package org.koin.ksp.generated
import org.koin.core.module.Module
import org.koin.dsl.*
import org.koin.meta.annotations.ExternalDefinition
import org.koin.core.definition.KoinDefinition
@ExternalDefinition("app.vercors.launcher.core.meta.game")
public fun Module.defineprovideGameApi() : KoinDefinition<*> = single() { _ -> app.vercors.launcher.core.meta.game.provideGameApi(ktorfit=get(qualifier=org.koin.core.qualifier.StringQualifier("metaKtorfit"))) } bind(app.vercors.launcher.core.meta.game.GameApi::class)
@ExternalDefinition("app.vercors.launcher.core.meta.home")
public fun Module.defineprovideHomeApi() : KoinDefinition<*> = single() { _ -> app.vercors.launcher.core.meta.home.provideHomeApi(ktorfit=get(qualifier=org.koin.core.qualifier.StringQualifier("metaKtorfit"))) } bind(app.vercors.launcher.core.meta.home.HomeApi::class)
@ExternalDefinition("app.vercors.launcher.core.meta.loader")
public fun Module.defineprovideLoaderApi() : KoinDefinition<*> = single() { _ -> app.vercors.launcher.core.meta.loader.provideLoaderApi(ktorfit=get(qualifier=org.koin.core.qualifier.StringQualifier("metaKtorfit"))) } bind(app.vercors.launcher.core.meta.loader.LoaderApi::class)
public val _defaultModule : Module get() = module {
defineprovideGameApi()
defineprovideHomeApi()
defineprovideLoaderApi()
}
public val defaultModule : org.koin.core.module.Module get() = _defaultModule
public fun org.koin.core.KoinApplication.defaultModule(): org.koin.core.KoinApplication = modules(defaultModule)
I've realized that in 2.0.0-RC1 it did not generate the definition for provideMetaKtorfit, maybe this is where I should investigate. This definition has @Property dependencies, maybe this is a clue.
Why all is generated in default module? Did you skipped a module?
provideMetaKtorfit is not geenrated then
All 4 definitions are declared in the CoreMetaModule module. Source code is here if you want to have a better understanding: https://github.com/skyecodes/vercors/blob/main/launcher/core/meta/src/main/kotlin/app/vercors/launcher/core/meta/CoreMetaModule.kt
(The 3 other definitions are located in their respective subpackage)
I've tested building locally the koin-annotations project on different commits until I found the commit where the problem starts appearing: https://github.com/InsertKoinIO/koin-annotations/commit/65823074f44e453e355035675ac78a98c998a4f1
Also, these are the logs I get before/after that commit:
Before:
2025-02-10T16:01:32.882+0100 [INFO] [org.gradle.api.Task] i: [ksp] loaded provider(s): [de.jensklingenberg.ktorfit.KtorfitProcessorProvider, androidx.room.RoomKspProcessor$Provider, org.koin.compiler.BuilderProcessorProvider]
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Scan symbols ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid definition symbols found.
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid entity: provideGameApi
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid entity: provideHomeApi
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid entity: provideLoaderApi
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid symbols found (3), waiting for next round
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] round 2 of processing
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Scan symbols ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Build metadata ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan modules ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan definitions ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan functions ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Generate code ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] generate 1 modules ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] generate module CoreMetaModule
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] write definition provideMetaKtorfit ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] write definition provideGameApi ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] write definition provideHomeApi ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] write definition provideLoaderApi ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Koin Tags Generation ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] writeModuleTag? CoreMetaModule
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] round 3 of processing
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Scan symbols ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Build metadata ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan modules ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan definitions ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan functions ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Generate code ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] generate 1 modules ...
2025-02-10T16:01:32.882+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] generate module CoreMetaModule
After:
2025-02-10T16:07:03.942+0100 [INFO] [org.gradle.api.Task] i: [ksp] loaded provider(s): [de.jensklingenberg.ktorfit.KtorfitProcessorProvider, androidx.room.RoomKspProcessor$Provider, org.koin.compiler.BuilderProcessorProvider]
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Scan symbols ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid definition symbols found.
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid entity: provideGameApi
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid entity: provideHomeApi
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid entity: provideLoaderApi
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid symbols found (3), waiting for next round
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] round 2 of processing
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Scan symbols ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Build metadata ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan modules ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan definitions ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan functions ...
2025-02-10T16:07:03.942+0100 [INFO] [org.gradle.api.Task] i: [ksp] No module found for 'app.vercors.launcher.core.meta.game.provideGameApi'. Definition is added to 'defaultModule'
2025-02-10T16:07:03.942+0100 [INFO] [org.gradle.api.Task] i: [ksp] No module found for 'app.vercors.launcher.core.meta.home.provideHomeApi'. Definition is added to 'defaultModule'
2025-02-10T16:07:03.942+0100 [INFO] [org.gradle.api.Task] i: [ksp] No module found for 'app.vercors.launcher.core.meta.loader.provideLoaderApi'. Definition is added to 'defaultModule'
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Generate code ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] generate 0 modules ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] generate default file ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] write definition provideGameApi ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] write definition provideHomeApi ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] write definition provideLoaderApi ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Koin Tags Generation ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] round 3 of processing
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Scan symbols ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Build metadata ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan modules ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan definitions ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan functions ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Generate code ...
2025-02-10T16:07:03.942+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] generate 0 modules ...
let's see with 2.0-RC3
Unfortunately, I still have the same issue with 2.0.0-RC3 (https://github.com/InsertKoinIO/koin-annotations/commit/27ca37d97e4cf711c23f89d8335eafea8d6da9a9).
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] round 1 of processing
2025-02-19T22:18:09.142+0100 [INFO] [org.gradle.api.Task] i: [ksp] loaded provider(s): [de.jensklingenberg.ktorfit.KtorfitProcessorProvider, androidx.room.RoomKspProcessor$Provider, org.koin.compiler.BuilderProcessorProvider]
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Scan symbols ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid definition symbols found.
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid entity: provideGameApi
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid entity: provideHomeApi
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid entity: provideLoaderApi
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Invalid symbols found (3), waiting for next round
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] round 2 of processing
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Scan symbols ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Build metadata ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan modules ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan definitions ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan functions ...
2025-02-19T22:18:09.142+0100 [INFO] [org.gradle.api.Task] i: [ksp] No module found for 'app.vercors.launcher.core.meta.game.provideGameApi'. Definition is added to 'defaultModule'
2025-02-19T22:18:09.142+0100 [INFO] [org.gradle.api.Task] i: [ksp] No module found for 'app.vercors.launcher.core.meta.home.provideHomeApi'. Definition is added to 'defaultModule'
2025-02-19T22:18:09.142+0100 [INFO] [org.gradle.api.Task] i: [ksp] No module found for 'app.vercors.launcher.core.meta.loader.provideLoaderApi'. Definition is added to 'defaultModule'
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Generate code ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] generate 0 modules ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] generate default file ...
2025-02-19T22:18:09.142+0100 [WARN] [org.gradle.api.Task] w: [ksp] Generating 'defaultModule' with 3 definitions
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] write definition provideGameApi ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] write definition provideHomeApi ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] write definition provideLoaderApi ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Koin Tags Generation ...
2025-02-19T22:18:09.142+0100 [WARN] [org.gradle.api.Task] w: [ksp] [Deprecation] 'defaultModule' generation is deprecated. Use KSP argument arg("KOIN_DEFAULT_MODULE","true") to activate default module generation.
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] round 3 of processing
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Scan symbols ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Build metadata ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan modules ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan definitions ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] scan functions ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] Generate code ...
2025-02-19T22:18:09.142+0100 [DEBUG] [org.gradle.api.Task] v: [ksp] generate 0 modules ...
main problem is why you have default module generated here, and not your previous one
for
KoinMultiplatformApplication( config = koinConfiguration { modules(AppModule().module) } )Unresolved reference. None of the following candidates is applicable because of a receiver type mismatch:
AppModule shows below: `@Module(includes = [NetworkModule::class, DatabaseModule::class]) @ComponentScan("xx.xxx") class AppModule {
@Single
fun provideNetworkListener() = createNetworkListener()
}`
unfortunately, 2.0.0-RC5 problem still exists.
can you share your compile error? If .module is not generated, the compiler encountered an error
can you share your compile error? If .module is not generated, the compiler encountered an error
Still, 2.0.0 no luck. Does the new "KoinMultiplatformApplication(){}" have some side effects?
I checked the generated files. Two files missing.
Later than 2.0.0-Beta3,
Before,
Compile error shows below:
FAILURE: Build failed with an exception.
- What went wrong: Execution failed for task ':composeApp:compileKotlinDesktop'.
A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction Compilation error. See log for more details
- Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. Get more help at https://help.gradle.org.
BUILD FAILED in 9s 13 actionable tasks: 3 executed, 10 up-to-date 10:43:13: Execution finished 'run'.
@arnaudgiuliani Thanks for your time.
Full debug info:
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception.
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':composeApp:compileKotlinDesktop'.
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Compilation error. See log for more details
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try:
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Run with --stacktrace option to get the stack trace.
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Run with --scan to get full insights.
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Get more help at https://help.gradle.org.
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger]
2025-02-25T10:58:53.445+0800 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger] BUILD FAILED in 4s
I need to see above your message. I don't have enough details on error failure
I need to see above your message. I don't have enough details on error failure
Above FAILURE:
17:34:01: Executing 'run'…
Type-safe project accessors is an incubating feature.
> Configure project :composeApp
w: The `kotlin.mpp.androidGradlePluginCompatibility.nowarn` deprecated property is used in your build.
Please, stop using it as it is unsupported and may apply no effect to your build.
> Task :composeApp:convertXmlValueResourcesForCommonMain UP-TO-DATE
> Task :composeApp:copyNonXmlValueResourcesForCommonMain UP-TO-DATE
> Task :composeApp:prepareComposeResourcesTaskForCommonMain UP-TO-DATE
> Task :composeApp:convertXmlValueResourcesForDesktopMain NO-SOURCE
> Task :composeApp:copyNonXmlValueResourcesForDesktopMain NO-SOURCE
> Task :composeApp:prepareComposeResourcesTaskForDesktopMain NO-SOURCE
> Task :composeApp:assembleDesktopMainResources UP-TO-DATE
> Task :composeApp:checkKotlinGradlePluginConfigurationErrors SKIPPED
> Task :composeApp:generateResourceAccessorsForCommonMain UP-TO-DATE
> Task :composeApp:generateResourceAccessorsForDesktopMain NO-SOURCE
> Task :composeApp:generateActualResourceCollectorsForDesktopMain UP-TO-DATE
> Task :composeApp:generateComposeResClass UP-TO-DATE
> Task :composeApp:generateExpectResourceCollectorsForCommonMain UP-TO-DATE
> Task :composeApp:transformCommonMainDependenciesMetadata UP-TO-DATE
> Task :composeApp:prepareAppResources NO-SOURCE
> Task :composeApp:kspCommonMainKotlinMetadata
w: [ksp] [Deprecation] 'defaultModule' generation is deprecated. Use KSP argument arg("KOIN_DEFAULT_MODULE","true") to activate default module generation.
w: [ksp] Koin Configuration Check ...
> Task :composeApp:kspKotlinDesktop
w: [ksp] [Deprecation] 'defaultModule' generation is deprecated. Use KSP argument arg("KOIN_DEFAULT_MODULE","true") to activate default module generation.
w: [ksp] Koin Configuration Check ...
> Task :composeApp:copyRoomSchemas NO-SOURCE
> Task :composeApp:desktopProcessResources UP-TO-DATE
> Task :composeApp:compileKotlinDesktop
e: file:///C:/Users/.../App.kt:29:54 Unresolved reference 'module'.
e: file:///C:/Users/.../Koin.kt:28:45 Unresolved reference 'module'.
> Task :composeApp:compileKotlinDesktop FAILED
13 actionable tasks: 3 executed, 10 up-to-date
I think the Unresolved reference is dued to AppModule hasn't been generated
Probably also related to https://github.com/InsertKoinIO/koin-annotations/issues/238 Since my AppModule used @componentscan, too
Alright, I have found out how to fix the issue for me. Turns out it is related to the fact that I use another KSP plugin (Ktorfit).
My provideXxxApi definitions each call a createXxxApi method that is generated by the Ktorfit KSP plugin and return its result. During scanning, Koin cannot figure out the return type of these definitions because it is not explicitly stated and the createXxxApi method may have not been generated yet. By explicitly stating the return type of these definitions, the module is now properly generated.
See this commit in my case https://github.com/skyecodes/vercors/pull/44/commits/f989b741005ea60f26d5fe8498e1759c4b4c1f46. Hopefully OP is running into the same issue as me and can be fixed the same way. Maybe something can be done on Koin's side to avoid this problem, or maybe it is unavoidable due to how the scanning process was changed for the KSP2 compatibility.
Alright, I have found out how to fix the issue for me. Turns out it is related to the fact that I use another KSP plugin (Ktorfit).
My
provideXxxApidefinitions each call acreateXxxApimethod that is generated by the Ktorfit KSP plugin and return its result. During scanning, Koin cannot figure out the return type of these definitions because it is not explicitly stated and thecreateXxxApimethod may have not been generated yet. By explicitly stating the return type of these definitions, the module is now properly generated.See this commit in my case skyecodes/vercors@f989b74. Hopefully OP is running into the same issue as me and can be fixed the same way. Maybe something can be done on Koin's side to avoid this problem, or maybe it is unavoidable due to how the scanning process was changed for the KSP2 compatibility.
You are absolutely genius :). Yes, my issue fixed. So it's pretty clear later than 2.0.0-Beta3, ktorfit.createXXXService() need to explicitly state return type. The reason might as you said it's KSP2 issue.
Thanks a lot guys @skyecodes @arnaudgiuliani
If this issue cannot be fixed on Koin's side, @arnaudgiuliani you might help me close this issue directly. Thanks :)
We have similar issue in project. We are trying to upgrade koin annotations from 1.3.1 to 2.0.0 and 2.0.0 we have problem in one of our view model which is using generated code from compose destination library to retrieve args for view model. For this case default module is generated. Whenever im commenting import and usage of that destination class - module is generated properly again.
Based on information from this gh issue I've switched to 2.0.0-Beta3. Module is generated regardless of usage of destination class from compose destination libs. Have more issues in other gradle modules regarding @ComponentScan, but mentioned one was most difficult to catch and it was quite isolated from others with small scope of code.
Compose destination right now is on version of 1.10.2 but trying to update it to never version doesn't affect generation of koin annotations.
We need to unqueue all feedback for Koin Annotations 2.0. Let me check that all 👍 @ZeDzislaw can you share more details, snippets?
let's reopen if needed 👍