android studio 3.1: build:gradle:3.1.0 - 设置输出文件名时不支持绝对路径 [英] android studio 3.1: build:gradle:3.1.0 - Absolute path are not supported when setting an output file name

查看:32
本文介绍了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 出现错误:

And now I get error in my app/build.gradle:

def releaseFileName = "${rootProject.name}_${defaultConfig.versionName}.apk"
outputFileName = new File(rootProject.projectDir.absolutePath + "/release", releaseFileName.toLowerCase())

错误:

设置输出文件名时不支持绝对路径

我需要将输出 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)
    }
}

这篇关于android studio 3.1: build:gradle:3.1.0 - 设置输出文件名时不支持绝对路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆