如何使用 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",
)
}
我正在将一个应用程序从 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",
)
}