Hen*_*cha 13 android gradle kotlin gradle-kotlin-dsl
我正在尝试将 Android 应用程序的 build.gradle 文件转换为 Kotlin DSL。这个文件有一个这样的功能:
def getLastCommitHash() {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', '--short', 'HEAD'
standardOutput = stdout
}
return stdout.toString().trim()
}
Run Code Online (Sandbox Code Playgroud)
我将其转换为:
fun getLastCommitHash() {
val stdout = ByteArrayOutputStream()
exec {
commandLine("git", "rev-parse", "--short", "HEAD")
standardOutput = stdout
}
return stdout.toString().trim()
}
Run Code Online (Sandbox Code Playgroud)
我收到Unresolved reference: ByteArrayOutputStream
错误并应用导入,将其更改为java.io.ByteArrayOutputStream()
显示Unresolved reference: io
错误。
我做错了什么吗?提前致谢。
Chr*_*iki 10
在块之前java.io
执行时从作品导入。我可以使用以下命令成功运行 Gradle 7.3.2 和 6.9.2 的构建:plugins
build.gradle.kts
import java.io.ByteArrayOutputStream
plugins {
`java-library`
}
println(ByteArrayOutputStream::class)
Run Code Online (Sandbox Code Playgroud)
如果您转义完整的包名称,那么您也可以在不导入类的情况下使其工作(如上测试):
plugins {
`java-library`
}
println(`java.security`.MessageDigest::class)
Run Code Online (Sandbox Code Playgroud)
我在 intellij idea 的后端项目中遇到了这个问题,我在文件顶部添加了这个导入build.gradle
:
import java.io.ByteArrayOutputStream
Run Code Online (Sandbox Code Playgroud)
现在它起作用了。