android studio 3.1: build:gradle:3.1.0 - Absolute path are not supported when setting an output file name

a_subscriber picture a_subscriber · Mar 28, 2018 · Viewed 17.4k times · Source

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'

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'

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())

Error:

Absolute path are not supported when setting an output file name

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?

Answer

José Luis Ametller picture José Luis Ametller · Mar 29, 2018

Just in case this helps, this error means that now it's not allowed to have absolute paths on anything related to the apk's file name. I can attach you my BEFORE and AFTER to achieve what I needed (to have the APK in the project/app/build/ folder:

BEFORE gradle 3.1.0

applicationVariants.all { variant ->
    variant.outputs.all { output ->
        outputFileName = new File(
                output.outputFile.parent,
                output.outputFile.name)
    }
}

IN or AFTER gradle 3.1.0

applicationVariants.all { variant ->
    variant.outputs.all { output ->
        outputFileName = new File(
                "./../../../../../build/",
                output.outputFile.name)
    }
}