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

How to get a custom method inside a block with Kotlin Gradle DSL?

我正在将一个应用程序从 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

在对插件选项进行了一番尝试后,我找到了这个解决方案:

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