在Gradle脚本中引用用户的主目录

See*_*vil 31 windows android gradle

是否有更简洁的方法来引用用户主目录中的文件,而不是在gradle脚本中执行以下操作?(在此示例中引用Android密钥库)

homeDir = System.getenv('HOMEDRIVE') + System.getenv('HOMEPATH');
...
signingConfigs {
    release {
        storeFile file(homeDir + "\\.android\\releaseKeystore.jks")
    }
}
...
Run Code Online (Sandbox Code Playgroud)

Sho*_*orn 27

未经测试的代码,但是这样的事情怎么样(可能需要围绕"X as File"位括号):

signingConfigs {
  release {
    storeFile "${System.properties['user.home']}${File.separator}.android${File.separator}releaseKeystore.jks" as File
  }
}
Run Code Online (Sandbox Code Playgroud)

  • `$ {System.properties ['user.home']}`就像一个魅力,有助于建立当地的常春藤. (2认同)

roo*_*msg 26

更通用(阅读:"groovy"而不是使用"ant")

def homePath = System.properties['user.home']
Run Code Online (Sandbox Code Playgroud)


dan*_*ito 7

Gradle 知道引用用户主目录中的gradleUserHomeDir目录的属性(例如在 Unix 上:~/.gradle):.gradle

println project.gradle.gradleUserHomeDir
Run Code Online (Sandbox Code Playgroud)

由于它是一个文件对象,您可以简单地使用.parent它来获取用户的主目录:

signingConfigs {
    release {
        storeFile file(project.gradle.gradleUserHomeDir.parent + "/.android/releaseKeystore.jks")
    }
}
Run Code Online (Sandbox Code Playgroud)


Sea*_*ull 2

您可以使用ant来访问user.home属性。然后,您可以使用 Java File API,这比路径字符串连接更清晰。

task hello << {
    def homePath = ant.properties['user.home']
    println homePath
    println new File(homePath, "relative/file/path.txt")
}
Run Code Online (Sandbox Code Playgroud)