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