在 macbook Pro 上的 gradle.build 中访问 .bashrc 的路径



我在.bashrc中设置了一个路径,我想从我的build.gradle文件访问该路径。我在 gradle 中使用命令行方法,但我似乎无法让它工作。

我的 .bashrc:

APK_PATH="echo /Users/CPE/APK"
export APK_PATH

这在终端中给了我这个结果:

$APK_PATH
/Users/CPE/APK

在我的gradle.build文件中,我有以下代码:

def getOutputPath = { ->
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'echo', '$APK_PATH'
        standardOutput = stdout
    }
    return stdout.toString().trim()
}
applicationVariants.all { variant ->
        def newName;
        def versionNumber = variant.versionName;
        def appName = variant.name.replace("Release","");
        def date = getDate();
        if (variant.buildType.name == "release") {
            newName = appName + "_" + date + ".apk";
            releaseDir = getOutputPath() + "/" + appName;
        } else {
            newName = variant.name;
        }
        variant.outputFile = new File(releaseDir, newName);
    }

当我尝试制作发布版本时,出现以下错误:

无法打开 '$APK_PATH/ostran/ostran_20141209.apk' 作为 zip 存档

与其使用 .bashrc 文件,不如使用本地 gradle.properties,我发现 WAAAY 更容易!

您可以将 gradle.properties 文件放在 Gradle 用户主目录中。gradle.properties 文件中设置的属性可以通过项目对象进行访问。用户主目录中的属性文件优先于项目目录中的属性文件。

如果此属性不存在,将引发异常,并且生成将失败。如果您的构建脚本依赖于用户可能设置的可选属性(可能在 gradle.properties 文件中),则需要在访问它们之前检查是否存在。你可以通过使用返回 true 或 false 的 hasProperty('propertyName') 方法来执行此操作。

我的口味.gradle

applicationVariants.all { variant ->
        if (project.hasProperty('APK_PATH')) {
            def appName = variant.name.replace("Release", "");
            def releaseDir = variant.outputFile.parent
            def newName = variant.name;
            if (variant.buildType.name == "release") {
                newName = appName + "_" + getDate() + ".apk";
                releaseDir = APK_PATH + appName;
            }
            variant.outputFile = new File(releaseDir, newName);
        }
    }

最新更新