Fastlane Migration
Use this skill when you need to migrate from Fastlane supply to the gplay CLI.
Preconditions
- Existing Fastlane metadata directory structure.
- gplay CLI installed and authenticated.
- Familiarity with the source Fastlane directory layout.
Migrate Command
Basic migration
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata
Dry run (preview without writing files)
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata \
--dry-run
Migrate specific locales only
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata \
--locales en-US,es-ES,fr-FR
Dry run with specific locales
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata \
--locales en-US,ja-JP \
--dry-run
Flags
| Flag | Description | Required |
|---|---|---|
--source | Path to Fastlane metadata directory | Yes |
--output-dir | Output directory for gplay metadata | Yes |
--dry-run | Preview changes without writing files | No |
--locales | Comma-separated list of locales to migrate | No (all by default) |
What Gets Migrated
The command converts the Fastlane directory structure into the gplay metadata format:
Fastlane source structure
fastlane/metadata/android/
├── en-US/
│ ├── title.txt
│ ├── short_description.txt
│ ├── full_description.txt
│ ├── video.txt
│ ├── changelogs/
│ │ ├── 100.txt
│ │ └── 101.txt
│ └── images/
│ ├── phoneScreenshots/
│ │ ├── 1.png
│ │ └── 2.png
│ ├── icon.png
│ └── featureGraphic.png
├── es-ES/
│ └── ...
Migrated output structure
metadata/
├── en-US/
│ ├── listing.json
│ ├── changelogs/
│ │ ├── 100.txt
│ │ └── 101.txt
│ └── images/
│ ├── phoneScreenshots/
│ │ ├── 1.png
│ │ └── 2.png
│ ├── icon.png
│ └── featureGraphic.png
├── es-ES/
│ └── ...
File conversions
title.txt,short_description.txt,full_description.txt,video.txtare consolidated intolisting.json.changelogs/are copied as-is.images/are copied as-is.
Workflow Examples
Full migration from Fastlane
# 1. Preview the migration
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata \
--dry-run
# 2. Run the actual migration
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata
# 3. Verify the output
ls -R ./metadata
# 4. Import to Play Store
gplay sync import-listings \
--package com.example.app \
--dir ./metadata
Incremental locale migration
# Migrate English first
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata \
--locales en-US
# Verify and test
gplay sync diff-listings \
--package com.example.app \
--dir ./metadata
# Migrate remaining locales
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata \
--locales es-ES,fr-FR,de-DE,ja-JP
CI/CD migration validation
# In CI, validate that migration produces expected output
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata-test \
--dry-run
# Check exit code
if [ $? -eq 0 ]; then
echo "Migration validation passed"
else
echo "Migration validation failed"
exit 1
fi
Replacing Fastlane Supply Commands
| Fastlane Command | gplay Equivalent |
|---|---|
fastlane supply init | gplay sync export-listings --dir ./metadata |
fastlane supply | gplay sync import-listings --dir ./metadata |
fastlane supply --skip_upload_images | gplay sync import-listings --dir ./metadata |
fastlane supply --track beta | gplay release --track beta --bundle app.aab |
fastlane supply --track production --rollout 0.1 | gplay release --track production --bundle app.aab --rollout 10 |
Best Practices
- Always dry-run first - Preview the migration output before writing files.
- Migrate locale by locale - Start with your primary locale and verify.
- Keep Fastlane source - Do not delete the Fastlane directory until fully migrated and verified.
- Validate after migration - Use
gplay validate listingto check character limits. - Update CI/CD gradually - Replace Fastlane commands one at a time.
- Version control the output - Commit migrated metadata to track changes.