gradle

All gradle related actions, including building and testing your Android app

Run ./gradlew tasks to get a list of all available gradle tasks for your project

gradle
Supported platforms ios, android
Author @KrauseFx, @lmirosevic
Returns The output of running the gradle task

1 Example

gradle(
  task: "assemble",
  flavor: "WorldDomination",
  build_type: "Release"
)

To build an AAB use:

gradle(
  task: "bundle",
  flavor: "WorldDomination",
  build_type: "Release"
)

You can pass multiple gradle tasks:

gradle(
  tasks: ["assembleDebug", "bundleDebug"]
)

You can pass properties to gradle:

gradle(
  # ...

  properties: {
    "exampleNumber" => 100,
    "exampleString" => "1.0.0",
    # ...
  }
)

You can use this to change the version code and name of your app:

gradle(
  # ...

  properties: {
    "android.injected.version.code" => 100,
    "android.injected.version.name" => "1.0.0",
    # ...
  }
)

You can use this to automatically sign and zipalign your app:

gradle(
  task: "assemble",
  build_type: "Release",
  print_command: false,
  properties: {
    "android.injected.signing.store.file" => "keystore.jks",
    "android.injected.signing.store.password" => "store_password",
    "android.injected.signing.key.alias" => "key_alias",
    "android.injected.signing.key.password" => "key_password",
  }
)

If you need to pass sensitive information through the gradle action, and don't want the generated command to be printed before it is run, you can suppress that:

gradle(
  # ...
  print_command: false
)

You can also suppress printing the output generated by running the generated Gradle command:

gradle(
  # ...
  print_command_output: false
)

To pass any other CLI flags to gradle use:

gradle(
  # ...

  flags: "--exitcode --xml file.xml"
)

Delete the build directory, generated APKs and AABs

gradle(
  task: "clean"
)

Parameters

Key Description Default
task The gradle task you want to execute, e.g. assemble, bundle or test. For tasks such as assembleMyFlavorRelease you should use gradle(task: 'assemble', flavor: 'Myflavor', build_type: 'Release')
flavor The flavor that you want the task for, e.g. MyFlavor. If you are running the assemble task in a multi-flavor project, and you rely on Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] then you must specify a flavor here or else this value will be undefined
build_type The build type that you want the task for, e.g. Release. Useful for some tasks such as assemble
tasks The multiple gradle tasks that you want to execute, e.g. [assembleDebug, bundleDebug]
flags All parameter flags you want to pass to the gradle command, e.g. --exitcode --xml file.xml
project_dir The root directory of the gradle project .
gradle_path The path to your gradlew. If you specify a relative path, it is assumed to be relative to the project_dir
properties Gradle properties to be exposed to the gradle script
system_properties Gradle system properties to be exposed to the gradle script
serial Android serial, which device should be used for this command ''
print_command Control whether the generated Gradle command is printed as output before running it (true/false) true
print_command_output Control whether the output produced by given Gradle command is printed while running (true/false) true

* = default value is dependent on the user's system


Lane Variables

Actions can communicate with each other using a shared hash lane_context, that can be accessed in other actions, plugins or your lanes: lane_context[SharedValues:XYZ]. The gradle action generates the following Lane Variables:

SharedValue Description
SharedValues::GRADLE_APK_OUTPUT_PATH The path to the newly generated apk file. Undefined in a multi-variant assemble scenario
SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS When running a multi-variant assemble, the array of signed apk's that were generated
SharedValues::GRADLE_FLAVOR The flavor, e.g. MyFlavor
SharedValues::GRADLE_BUILD_TYPE The build type, e.g. Release
SharedValues::GRADLE_AAB_OUTPUT_PATH The path to the most recent Android app bundle
SharedValues::GRADLE_ALL_AAB_OUTPUT_PATHS The paths to the most recent Android app bundles
SharedValues::GRADLE_OUTPUT_JSON_OUTPUT_PATH The path to the most recent output.json file
SharedValues::GRADLE_ALL_OUTPUT_JSON_OUTPUT_PATHS The path to the newly generated output.json files
SharedValues::GRADLE_MAPPING_TXT_OUTPUT_PATH The path to the most recent mapping.txt file
SharedValues::GRADLE_ALL_MAPPING_TXT_OUTPUT_PATHS The path to the newly generated mapping.txt files

To get more information check the Lanes documentation.


Documentation

To show the documentation in your terminal, run

fastlane action gradle

CLI

It is recommended to add the above action into your Fastfile, however sometimes you might want to run one-offs. To do so, you can run the following command from your terminal

fastlane run gradle

To pass parameters, make use of the : symbol, for example

fastlane run gradle parameter1:"value1" parameter2:"value2"

It's important to note that the CLI supports primitive types like integers, floats, booleans, and strings. Arrays can be passed as a comma delimited string (e.g. param:"1,2,3"). Hashes are not currently supported.

It is recommended to add all fastlane actions you use to your Fastfile.


Source code

This action, just like the rest of fastlane, is fully open source, view the source code on GitHub


Back to actions