Skip to content

Instantly share code, notes, and snippets.

@twiceyuan
Created January 16, 2019 09:52
Show Gist options
  • Save twiceyuan/6f4b949f59d9eb1c357d9be591397ca2 to your computer and use it in GitHub Desktop.
Save twiceyuan/6f4b949f59d9eb1c357d9be591397ca2 to your computer and use it in GitHub Desktop.
[Gradle Kotlin DSL Implementation 过滤] #Gradle #Kotlin

根据 Build Type 或者 Flavor 来构建(替代之前 Groovy 版自动生成的函数)

fun DependencyHandlerScope.implementationWithFilter(
        flavor: String = "",
        buildType: String = "",
        dependency: Any
): Dependency? = when {
    flavor == "" && buildType == "" -> implementation(dependency)
    flavor == "" && buildType != "" -> "${buildType}Implementation"(dependency)
    flavor != "" && buildType == "" -> "${flavor}Implementation"(dependency)
    flavor != "" && buildType != "" -> "$flavor${buildType[0].toUpperCase() + buildType.substring(1)}Implementation"(dependency)
    else -> implementation(dependency)
}

用法:

// 内存泄漏检测
val leakCanaryVersion = "1.6.3"
implementationWithFilter(flavor = "dev", dependency = "com.squareup.leakcanary:leakcanary-android:$leakCanaryVersion")
implementationWithFilter(flavor = "publish", dependency = "com.squareup.leakcanary:leakcanary-android-no-op:$leakCanaryVersion")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment