build_android_app
Alias for the gradle
action
Run
./gradlew tasks
to get a list of all available gradle tasks for your project
build_android_app | |
---|---|
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 build_android_app
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 build_android_app
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 build_android_app
To pass parameters, make use of the :
symbol, for example
fastlane run build_android_app 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