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

时间:2014-12-09 10:48:02

标签: android bash gradle

我在.bashrc中设置了一个路径,我想从build.gradle文件中访问该路径。 我在gradle中使用了commandLine方法,但我似乎无法使其正常工作。

我的.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);
    }

当我尝试发布版本时,我收到以下错误:

  

无法以zip档案打开'$ APK_PATH / ostran / ostran_20141209.apk'

1 个答案:

答案 0 :(得分:0)

您可以使用我发现WAAAY更容易的本地gradle.properties,而不是使用.bashrc文件。

  

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

     

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

my flavors.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);
        }
    }