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

时间:2013-12-07 12:56:12

标签: android windows gradle

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

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

5 个答案:

答案 0 :(得分:26)

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

signingConfigs {
  release {
    storeFile "${System.properties['user.home']}${File.separator}.android${File.separator}releaseKeystore.jks" as File
  }
}

答案 1 :(得分:23)

更通用(读:" groovy"& not using" ant")

def homePath = System.properties['user.home']

答案 2 :(得分: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")
}

答案 3 :(得分:1)

Gradle知道属性gradleUserHomeDir,该属性引用用户主目录中的目录.gradle(例如,在Unixes上为〜/ .gradle):

println project.gradle.gradleUserHomeDir

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

signingConfigs {
    release {
        storeFile file(project.gradle.gradleUserHomeDir.parent + "/.android/releaseKeystore.jks")
    }
}

答案 4 :(得分:0)

为了设置 system-debug-keystore-path,您可以使用以下代码行。

这适用于 MacOS 和 Windows。

signingConfigs {
        release {
            storeFile "${System.properties['user.home']}${File.separator}.android${File.separator}debug.keystore" as File
            keyAlias 'androiddebugkey'
            storePassword 'android'
            keyPassword 'android'
        }
    }
buildTypes {
        ...
        release {
            signingConfig signingConfigs.release
            ...
        }
    }