Skip to content

Koin 註解

為你的專案設定 Koin 註解

版本

你可以在 Maven Central 找到所有 Koin 套件。

以下是目前可用的版本:

設定與目前版本

以下是目前可用的 Koin 專案版本:

專案版本
koin-annotations-bomMaven Central
koin-annotationsMaven Central
koin-ksp-compilerMaven Central

KSP 外掛

我們需要 KSP 外掛才能運作 (https://github.com/google/ksp)。請遵循官方的 KSP 設定文件

只需加入 Gradle 外掛:

groovy
plugins {
    id "com.google.devtools.ksp" version "$ksp_version"
}

最新的 KSP 相容版本:1.9.24-1.0.20

Kotlin 與多平台

在標準的 Kotlin/Kotlin 多平台 (Multiplatform) 專案中,你需要依照以下方式設定 KSP:

  • 使用 KSP Gradle 外掛
  • commonMain 中加入 Koin 註解的依賴項
  • commonMain 設定 sourceSet
  • 加入 KSP 依賴項任務與 Koin 編譯器
  • 設定編譯任務依賴項至 kspCommonMainKotlinMetadata
groovy
plugins {
   id("com.google.devtools.ksp")
}

kotlin {

    sourceSets {
        
        // Add Koin Annotations
        commonMain.dependencies {
            // Koin
            implementation("io.insert-koin:koin-core:$koin_version")
            // Koin Annotations
            api("io.insert-koin:koin-annotations:$koin_annotations_version")
        }
    }
    
    // KSP Common sourceSet
    sourceSets.named("commonMain").configure {
        kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin")
    }       
}

// KSP Tasks
dependencies {
    add("kspCommonMainMetadata", libs.koin.ksp.compiler)
    add("kspAndroid", libs.koin.ksp.compiler)
    add("kspIosX64", libs.koin.ksp.compiler)
    add("kspIosArm64", libs.koin.ksp.compiler)
    add("kspIosSimulatorArm64", libs.koin.ksp.compiler)
}

// Trigger Common Metadata Generation from Native tasks
project.tasks.withType(KotlinCompilationTask::class.java).configureEach {
    if(name != "kspCommonMainKotlinMetadata") {
        dependsOn("kspCommonMainKotlinMetadata")
    }
}

Android 應用程式設定

  • 使用 KSP Gradle 外掛
  • 加入 Koin 註解與 Koin KSP 編譯器的依賴項
  • 設定 sourceSet
groovy
plugins {
   id("com.google.devtools.ksp")
}

android {

    dependencies {
        // Koin
        implementation("io.insert-koin:koin-android:$koin_version")
        // Koin Annotations
        implementation("io.insert-koin:koin-annotations:$koin_annotations_version")
        // Koin Annotations KSP Compiler
        ksp("io.insert-koin:koin-ksp-compiler:$koin_annotations_version")
    }

    // Set KSP sourceSet
    applicationVariants.all {
        val variantName = name
        sourceSets {
            getByName("main") {
                java.srcDir(File("build/generated/ksp/$variantName/kotlin"))
            }
        }
    }
}