android studio 3.1:build:gradle:3.1.0-设置输出文件名时不支持绝对路径
当我使用Android Studio 3.0 并且在project/build.gradle
中使用下一版的 Android Gradle插件时:
When I use Android Studio 3.0 and I use the next version of Android Gradle Plugin in project/build.gradle
:
classpath 'com.android.tools.build:gradle:3.0.1'
工作正常. 更新到Android Studio 3.1 后,结果更新了 Android Gradle插件:
And it's work fine. After I update to Android Studio 3.1 , as result I update Android Gradle Plugin :
classpath 'com.android.tools.build:gradle:3.1.0'
现在我的app/build.gradle
出现错误:
def releaseFileName = "${rootProject.name}_${defaultConfig.versionName}.apk"
outputFileName = new File(rootProject.projectDir.absolutePath + "/release", releaseFileName.toLowerCase())
错误:
绝对路径
Absolute path are not supported when setting an output file name
我需要将输出apk(app-release.apk
)放在项目中的特定路径中.在文件夹MyProject/release/app-relese.apk
中.我该怎么做?
I need to put output apk (app-release.apk
) in specific path in project. In folder MyProject/release/app-relese.apk
. How I can do this?
我认为使用"./../../../"是不好的解决方案...我在多个项目中使用通用gradle脚本,我想使代码独立于输出目录的深度.
I think using "./../../../" is bad solution... I use common gradle script for several projects and I want to make code to be independency from depth of output dir.
经过一番研究,我找到了适用于gradle插件3.1.2的解决方案:
After some researching I found this solution for gradle plugin 3.1.2:
applicationVariants.all { variant ->
variant.outputs.all { output ->
def relativeRootDir = output.packageApplication.outputDirectory.toPath()
.relativize(rootDir.toPath()).toFile()
output.outputFileName = new File( "$relativeRootDir/release", newOutputName)
}
}