Referencing the user's home directory in a Gradle script

Viewed 15210

Is there a cleaner way to reference a file in the user's home directory than doing the following in a gradle script? (referencing an Android keystore in this example)

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

Gradle knows the property gradleUserHomeDir which references the directory .gradle in user's home directory (e.g. on Unixes: ~/.gradle):

println project.gradle.gradleUserHomeDir

As it's a file object you can simply use .parent on it to get user's home directory:

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

In order to setup system-debug-keystore-path, you can use the following code lines.

This works on both MacOS and 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
            ...
        }
    }
Related