如何使用Kotlin Gradle DSL在块内获取自定义方法?

时间:2018-12-13 20:35:04

标签: gradle kotlin dexguard

我正在将一个应用程序从Gradle Groovy迁移到Kotlin。该应用程序使用Dexguard,并使用名为getDefaultDexGuardFile的方法来加载配置文件。

release {
  signingConfig signingConfigs.upload
  proguardFiles getDefaultDexGuardFile('dexguard-release-aggressive.pro')
  proguardFiles 'dexguard-rules.pro'
}

但是当迁移到Kotlin时,我找不到找到使其识别此选项的方法:

getByName("release") {
  signingConfig = signingConfigs.getByName("upload")
  proguardFiles(
    "getDefaultDexGuardFile"("dexguard-release-aggressive.pro"), // ?
    getDefaultDexGuardFile("dexguard-release-aggressive.pro"), // ?
    "dexguard-rules.pro",
  )
}

IDE不建议任何导入,因此我不知道如何实现。在Dexguard的jar中,我看到了此方法的两个引用:

public class C0867Pp extends Closure implements GeneratedClosure

public class C0828PC implements GroovyObject

1 个答案:

答案 0 :(得分:0)

在使用了插件选项之后,我找到了以下解决方案:

getByName("release") {
  signingConfig = signingConfigs.getByName("upload")
  proguardFiles(
    extraDexguardMethods.getDefaultDexGuardFile("dexguard-release-aggressive.pro"),
    "dexguard-rules.pro",
  )
}