Chapter 4. Custom Tasks
4.1 Writing Your Own Custom Tasks
Problem
You want to customize the Gradle build process with your own tasks.
Solution
Add task elements to the Gradle build files. Use the extra properties supplied with the Android plug-in to make development easier.
Discussion
The Gradle DSL supports a task block for defining your own custom tasks. The API includes a wide range of existing tasks (like Copy, Wrapper, and Exec) that you can use simply by setting properties.
For example, the Copy task includes from and into properties, and the from block can be configured to exclude specified filename patterns. To copy all the APKs into a new folder, excluding those that are either unsigned or unaligned, add the task in Example 4-1 to the module build.
Example 4-1. Copy APKs to another folder
taskcopyApks(type:Copy){from("$buildDir/outputs/apk"){exclude'**/*unsigned.apk','**/*unaligned.apk'}into'../apks'}
The buildDir property refers to the default build directory (app/build), and the dollar sign is used to inject it into a Groovy string (with double quotes). The documentation for the Copy task shows that the exclude block inside from supports an Ant-style directory name, meaning that ** matches all descendent directories.
If you don’t want to simply configure an existing Gradle task, you need to understand the distinction between the configuration and execution phases of Gradle. During the configuration phase, Gradle builds a DAG based on their dependencies. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access