Copying APK file in Android Gradle project
android, android-gradle-plugin, gradle
Solution
If you can get the variant object associated with devDebug you could query it with getOutputFile().
So if you wanted to publish all variants you'd something like this:
def publish = project.tasks.create("publishAll")
android.applicationVariants.all { variant ->
def task = project.tasks.create("publish${variant.name}Apk", Copy)
task.from(variant.outputFile)
task.into(buildDir)
task.dependsOn variant.assemble
publish.dependsOn task
}
Now you can call `gradle publishAll` and it'll publish all you variants.
One issue with the mapping file is that the Proguard task doesn't give you a getter to the file location, so you cannot currently query it. I'm hoping to get this fixed.
Problem
I'm trying to add a custom task to my Android project's `build.gradle` to copy the final APK and Proguard's `mapping.txt` into a different directory. My task depends on the `assembleDevDebug` task: ``` task publish(dependsOn: 'assembleDevDebug') << { description 'Copies the final APK to the release directory.' ... } ``` I can see how to do a file copy using the standard `Copy` task type, as per the docs: ``` task(copy, type: Copy) { from(file('srcDir')) into(buildDir) } ``` but that assumes you know the name and location of the file you want to copy. How can I find the exact name and location of the APK file which was built as part of the `assembleDevDebug` task? Is this available as a property? It feels as if I should be able to declare the files as inputs to my task, and declare them as outputs from the `assemble` task, but my Gradle-fu isn't strong enough. I have some custom logic to inject the version number into the APK filename, so my `publish` task can't just assume the default name and location.