Skip to main content

Publishing to App Stores

1. Publishing to Google Play Store

Step Description Action
1 Prepare app for release Create a release build using flutter build apk --release
2 Generate signing key Use keytool to create a keystore file
3 Configure signing Add key path and credentials to key.properties
4 Upload to Google Play Console Go to Google Play Console, create app, upload APK
5 Complete app listing Add screenshots, description, and metadata

Example: Signing Configuration

android {
    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}
Note: Ensure your app is optimized for release with flutter build apk --release and that all assets are properly included.
Warning: Never share your keystore file or its credentials. Losing them means you cannot update the app on Google Play.

2. Creating Google Play Developer Account

Example: Account Creation Steps

1. Visit https://play.google.com/console
2. Click "Create Account"
3. Fill in business details:
   - Business Name: MyCompany
   - Business Email: admin@mycompany.com
   - Country/Region: United States
4. Accept Terms and Pay $25 Registration Fee
Step Description Notes
1. Visit Console https://play.google.com/console Use a verified email address
2. Create Account Click "Create Account" Must be a Google account
3. Business Details Fill in company info Required for app publishing
4. Pay Registration Fee $25 one-time fee Non-refundable
Note: You must have a verified email and valid payment method to complete registration.
Warning: The Google Play Developer account is tied to your Google account and cannot be transferred.

Account Requirements

  • NEW Verified email address
  • $25 one-time registration fee
  • Valid payment method (credit card or bank account)
  • Business details (name, address, email)

3. Preparing Store Listing

Example: App Store Metadata

flutter:
  assets:
    - assets/icon.png
    - assets/splash.png

  # App Store metadata
  ios:
    bundleIdentifier: com.example.myapp
    teamId: ABC123DEF456
    signingCertificate: iPhone Distribution
    provisioningProfile: MyAppProfile

  android:
    package: com.example.myapp
    signing:
      storeFile: key.jks
      storePassword: myStorePassword
      keyAlias: myKeyAlias
      keyPassword: myKeyPassword
Field Description Required Notes
bundleIdentifier Unique identifier for iOS app Yes Must match App Store Connect
teamId Apple Developer Team ID Yes Found in Apple Developer account
signingCertificate Signing certificate name Yes Must match installed certificate
provisioningProfile Provisioning profile name Yes Must match installed profile
package Android package name Yes Must match Google Play Console
storeFile Keystore file path Yes Must be in project root or subdirectory
storePassword Keystore password Yes Must be kept secure
keyAlias Key alias in keystore Yes Must match alias used to create key
keyPassword Password for key in keystore Yes Must match password used to create key
Note: Ensure all metadata matches exactly what is entered in App Store Connect and Google Play Console to avoid rejection.
Warning: Never commit keystore files or passwords to version control. Use environment variables or secure secrets management.

Key Steps for Store Listing Preparation

  • Create or verify app identifiers in Apple Developer and Google Play Console
  • Generate signing certificates and provisioning profiles for iOS
  • Create or verify keystore files for Android
  • Update pubspec.yaml with correct identifiers and paths
  • Verify all metadata matches store console entries

4. Uploading App Bundle to Play Store

Example: Upload App Bundle

flutter build appbundle
Step Description Action
1. Build App Bundle Generate the app bundle for Android flutter build appbundle
2. Sign the Bundle Sign the generated bundle with your keystore Use keytool or Android Studio
3. Upload to Google Play Console Upload the signed bundle to the console Go to App releases > Internal testing
Note: Ensure the keystore is securely stored and backed up.
Warning: Do not use the debug keystore for production builds.

Key Points

  • Use flutter build appbundle to generate the bundle.
  • Sign with a release keystore before uploading.
  • Upload to Google Play Console under Internal Testing or Production track.

5. Configuring Release Tracks

Track Description Deployment Options Notes
production Final release track for public distribution App Store, Google Play Only stable builds allowed
internal For testing within the organization Internal distribution (e.g., Firebase App Distribution) Builds can be signed with internal certificates
alpha Early release for limited testing Google Play Internal Testing, TestFlight Builds may include experimental features
beta Release for broader testing before production Google Play Beta, TestFlight Builds must be stable but can include new features

Example: Setting up Google Play Release Track

flutter build appbundle
Note: Ensure the app's build.gradle is configured with the correct release track settings.
Warning: Do not upload builds to the production track unless they are fully tested and stable.

6. Publishing to Apple App Store

Step Description Details
1. Prepare for Submission Set up app metadata and assets
  • Create app icon (1024x1024 PNG)
  • Prepare screenshots (1080x1920 for iPhone, 1242x2688 for iPad)
  • Write app description and keywords
  • Set up privacy policy URL
2. Configure App ID Register app in Apple Developer Portal
  • Create App ID with explicit identifier (e.g., com.example.myapp)
  • Enable required capabilities (Push Notifications, In-App Purchase, etc.)
3. Create Distribution Certificate Generate certificate for code signing
  • Go to Apple Developer Portal → Certificates, Identifiers & Profiles
  • Select "Distribution" certificate type
  • Download and install in Keychain Access
4. Create Provisioning Profile Generate provisioning profile for distribution
  • Create "App Store" type provisioning profile
  • Associate with App ID and distribution certificate
  • Download and save to local machine
5. Build Release APK Generate signed release build
  • Run flutter build ios --release
  • Open Xcode project in ios/Runner.xcworkspace
  • Select "Release" configuration and appropriate team/certificate
6. Upload to App Store Connect Submit build via Transporter or Xcode
  • Open Transporter app or Xcode → Archive → Distribute App
  • Choose "App Store Connect" as distribution method
  • Upload the built archive file

Example: Configure App Store Build in Xcode

flutter build ios --release
open ios/Runner.xcworkspace
Note: Ensure that your app's Info.plist includes all necessary permissions and descriptions for App Store review.
Warning: Do not use flutter build ios --release without setting up the correct code signing identities in Xcode. The app will fail to archive or upload.

Key Requirements for App Store Submission

  • NEW App must support iOS 12.0 or higher
  • App icon must be 1024x1024 PNG format
  • App screenshots must be in landscape mode (iPhone 15 Pro Max)
  • Privacy policy URL must be accessible from the App Store
  • App must not use private APIs or frameworks

7. Creating Apple Developer Account

Step Description Action
1 Go to Apple Developer website Navigate to developer.apple.com and click "Account"
2 Sign in with Apple ID Use existing Apple ID or create a new one
3 Agree to terms Read and accept the Apple Developer Program License Agreement
4 Provide personal details Enter full name, address, phone number, and email
5 Pay annual fee Pay $99 USD for the Apple Developer Program membership
6 Verify account Complete verification via email or phone
Note: The Apple Developer Program membership is required to publish apps to the App Store.

Example: Apple Developer Account Registration

https://developer.apple.com/account/

8. Using TestFlight for Beta Testing

Example: Submitting to TestFlight

flutter build ios --release
# Then open Xcode and upload to App Store Connect
Step Description Notes
1. Build Release flutter build ios --release Creates IPA for distribution
2. Archive in Xcode Open archive in Xcode Must be done via Xcode for TestFlight
3. Upload to App Store Connect Use Xcode or Transporter Must be signed with valid provisioning profile
4. Add Testers Go to App Store Connect Invite internal or external testers
5. Distribute Build Select build version in TestFlight Builds can be distributed to groups or individuals
Note: TestFlight builds must be built with the release configuration to pass Apple's review process.
Warning: TestFlight builds expire after 90 days unless re-uploaded.

TestFlight Workflow Summary

  • Build app with flutter build ios --release
  • Archive in Xcode or use Transporter
  • Add testers to App Store Connect
  • Distribute build via TestFlight dashboard

9. Preparing App Store Listing

Example: App Store Metadata

name: "My Flutter App"
bundle_id: "com.example.myapp"
version: "1.0.0"
description: "A beautiful Flutter application."
screenshots:
  - "screenshots/screenshot1.png"
  - "screenshots/screenshot2.png"
categories:
  - "Entertainment"
  - "Games"
keywords:
  - "game"
  - "fun"
  - "flutter"
Field Description Required Notes
name App name displayed to users Yes Max 30 characters
bundle_id Unique identifier for the app Yes Reverse domain notation
version App version string Yes Must follow semantic versioning
description App description for the store Yes Max 4000 characters
screenshots Images for the app store listing No Up to 8 images, PNG or JPG
categories App category for the store No Up to 2 categories
keywords Search terms for the app No Up to 5 keywords
Note: Ensure all metadata aligns with Apple's App Store guidelines to avoid rejection.
Warning: App Store descriptions must not include URLs or external links.

10. Submitting App for Review

Step Description Action
1 Prepare app for submission Ensure all assets, metadata, and screenshots are ready.
2 Build release version Run flutter build appbundle for Android or flutter build ios for iOS.
3 Upload to Google Play Console Navigate to Google Play Console and upload the generated AAB or IPA file.
4 Complete store listing Fill in app details, screenshots, descriptions, and set pricing.
5 Submit for review Click "Submit" and wait for Google to review your app.

Example: Build Release APK

flutter build apk --release
Note: Ensure your app meets all Google Play Store guidelines before submission.
Warning: Once submitted, changes to app metadata or assets may require a new review.

Was this article helpful?