Release - App Store & Play Store Preparation
Prepare Flutter apps for production release. Handles signing, icons, splash screens, and store setup.
When to Use This Skill
- Setting up Android signing (keystore, key.properties)
- Configuring iOS signing (certificates, provisioning profiles)
- Creating app icons for iOS and Android
- Setting up splash screens
- Preparing for App Store Connect or Google Play Console
- Verifying release readiness
- Building release APK/AAB/IPA
Manual vs CI/CD Release
| Approach | Use When | Signing |
|---|---|---|
| Manual (this skill) | First release, small team | Local keystore, Xcode |
CI/CD (/ci-cd) |
Regular releases, teams | GitHub Secrets, Fastlane |
Recommendation: Start with manual release. Set up CI/CD when you need automation.
Quick Reference
Platform Requirements
| Platform | Signing | Store | Build Command |
|---|---|---|---|
| Android | Keystore + key.properties | Play Console | flutter build appbundle --release |
| iOS | Xcode Team + Provisioning | App Store Connect | flutter build ipa --release |
Commands
# Audit release readiness
dart run .claude/skills/release/scripts/check.dart
# Build release
flutter build appbundle --release # Android
flutter build ipa --release # iOS
| check.dart Option | Purpose |
|---|---|
--platform android/ios |
Audit specific platform only |
--fix |
Auto-fix .gitignore patterns |
--checklist |
Generate markdown checklist |
--capabilities |
Detect required iOS capabilities |
--keytool-command |
Generate keystore creation command |
Workflow
1. Audit Current State
dart run .claude/skills/release/scripts/check.dart
Identifies: Missing keystore, unsigned iOS, missing icons, uncommitted .env files.
2. Create Assets
See assets-guide.md:
- App icon: 1024x1024 PNG (no transparency for iOS)
- Splash screen: Configure flutter_native_splash
3. Configure Android Signing
See android-guide.md:
- Generate keystore
- Create key.properties (DO NOT COMMIT)
- Update build.gradle.kts
- Create proguard-rules.pro
4. Configure iOS Signing
See ios-guide.md:
- Open Xcode
- Select Team
- Configure capabilities
- Create App ID on Apple Developer
5. Store Setup
See platform guides:
- android-guide.md - Play Console setup
- ios-guide.md - App Store Connect setup
6. Build & Test Release
# Android
flutter build appbundle --release
# iOS
flutter build ipa --release
7. Final Verification
See checklist.md for comprehensive pre-release checklist.
File Structure
After release preparation:
android/key.properties # Signing config (DO NOT COMMIT)
android/app/build.gradle.kts # With signing config
android/app/proguard-rules.pro # R8 rules
ios/Runner.xcworkspace # With signing configured
assets/icons/app_icon.png # 1024x1024 source icon
pubspec.yaml # flutter_native_splash config
.gitignore # Must include key.properties, *.jks
Security Checklist
Critical files that must NEVER be committed:
| File | Contains | Gitignore Pattern |
|---|---|---|
key.properties |
Keystore passwords | android/key.properties |
*.jks / *.keystore |
Signing keys | *.jks / *.keystore |
.env |
API keys, secrets | .env / .env.* |
*.p8 |
Apple private keys | *.p8 |
google-services.json |
Firebase config (optional) | Varies |
Checklist
Assets:
- App icon 1024x1024 PNG (no transparency for iOS)
- Splash screen configured
- Screenshots for store listing
Android:
- Keystore created and backed up securely
- key.properties configured (not committed)
- build.gradle.kts has signing config
- proguard-rules.pro created
-
flutter build appbundle --releasesucceeds
iOS:
- Xcode Team selected
- App ID created on Apple Developer
- Provisioning profile configured
-
flutter build ipa --releasesucceeds
Store:
- App Store Connect app created
- Play Console app created
- Privacy policy URL ready
- Store listing content prepared
Security:
- .gitignore has all sensitive files
- No secrets committed to repository
- Keystore backed up to secure location
Guides
| Guide | Use For |
|---|---|
| android-guide.md | Keystore, signing, Play Store, Data Safety |
| ios-guide.md | Xcode signing, Privacy Manifest, ATT, App Store |
| assets-guide.md | App icons (incl. themed), splash screens |
| version-guide.md | Version format, store requirements |
| checklist.md | Comprehensive pre-release checklist |
Templates
Ready-to-use files in templates/:
| Template | Purpose |
|---|---|
PrivacyInfo.xcprivacy |
iOS Privacy Manifest (iOS 17+) |
proguard-rules.pro |
Android R8/ProGuard rules |
Related Skills
/ci-cd- Automated builds and deployment pipelines/testing- Ensure tests pass before release/a11y- Accessibility compliance for store approval
Common Issues
| Issue | Solution |
|---|---|
| "Keystore was tampered with" | Verify password in key.properties |
| "No signing certificate" | Xcode > Preferences > Accounts > refresh |
| ProGuard errors | Add keep rules to proguard-rules.pro |
| Icons don't update | Run flutter clean then rebuild |