Mobile Fastlane

How a distribution run works

Last updated 2026-10-07

Each distribute lane runs a fixed pipeline. Every step either succeeds or stops the lane with a clear error, and a failure notification is sent. Pick a platform to see its steps.

Distribution pipeline

android distribute

Validate config → production guard → Gradle build → find APK/AAB → copy to dist/
Release notes (file → text → git commits)
Are AI tests enabled AND groups/testers set?

Yes

  1. Upload and distribute to manual testers without test options
  2. Re-upload the same APK (Firebase reuses the release: RELEASE_UNMODIFIED), start AI tests and wait for results (blocking)

No

  1. Single upload (+ AI tests if enabled) + distribute
AI test report e-mail (if enabled) → Teams App Testing Agent Report card → the lane fails if tests failed
Why two uploads?: the Firebase plugin only distributes to groups after AI tests pass. Splitting the call means manual testers always receive the build, while failing AI tests still fail the lane.
my-app — zsh
~/my-app $ bundle exec fastlane android distribute environment:staging
[14:02:11]: Starting Fastlane lane: distribute
[14:02:11]: --- Android Build — STAGING ---
[14:02:11]: Gradle task: assembleRelease
[14:06:40]: BUILD SUCCESSFUL in 4m 29s
[14:06:41]: Android build completed.
[14:06:41]: Artifact: dist/MyApp-staging-v1.4.0-57.apk
[14:06:41]: --- Firebase App Distribution — STAGING ---
[14:06:58]: ✅ Uploaded the APK.
[14:06:59]: ✅ Distributed to "qa-team".
[14:07:00]: --- Firebase App Testing Agent ---
[14:10:12]: login-flow · Galaxy A54 · Android 14 PASSED
[14:10:13]: Fastlane completed successfully: distribute
A successful Android distribution (output shortened).

Official documentation

Was this helpful?