我在.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'
答案 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);
}
}