wuairc
3/19/2017 - 11:20 AM

Android: Get generated apk files on build finish.

Android: Get generated apk files on build finish.

./gradlew assembleDebug

Output apk count: 2
        Ouput File: /home/ty/git/build/androidBuild/droiddemo/app/outputs/apk/app-universal-debug.apk
        Ouput File: /home/ty/git/build/androidBuild/droiddemo/app/outputs/apk/app-armeabi-v7a-debug.apk
// copy to the build.gradle file of your project's application module

project.afterEvaluate {
    final Set<File> possibleOutputFiles = new HashSet<>()
    android.applicationVariants.each {
        it.outputs.each { BaseVariantOutput output ->
            possibleOutputFiles.add(output.outputFile)
        }
    }

    final Set<File> actualOutputFiles = new HashSet<>()
    project.tasks.matching { Task task ->
        task.name.startsWith("package")
    }.each { Task task ->
        task.doLast {
            Collection<File> outputFile = task.outputs.files.files.intersect(possibleOutputFiles)
            actualOutputFiles.addAll(outputFile)
        }
    }

    gradle.buildFinished {
        println "Output apk count: ${actualOutputFiles.size()}"
        actualOutputFiles.each {
            println "\tOuput File: $it.absolutePath"
        }
    }
}