Below is a clear, up-to-date step-by-step guide (2026) for publishing a Flutter app to the Google Play Console, written for beginners but detailed enough for production apps.


1️⃣ Prerequisites (Do This First)

✅ Accounts & Tools

  • Google Play Developer Account
    • One-time fee: $25
    • Sign up at Google Play Console
  • Flutter SDK (stable channel)
  • Android Studio
    • Android SDK
    • Android SDK Build-Tools
  • Java JDK 17+ (required for modern Android builds)

Check Flutter:

flutter doctor

Make sure no errors remain.


2️⃣ Prepare Your Flutter App

🔹 Update App Info

Edit pubspec.yaml:

name: my_app
description: My awesome Flutter app
version: 1.0.0+1
  • 1.0.0 → user-visible version
  • +1 → build number (must increase for every upload)

🔹 App Icon

Use flutter_launcher_icons:

dev_dependencies:
  flutter_launcher_icons: ^0.13.1

flutter_icons:
  android: true
  ios: false
  image_path: "assets/icon.png"

Run:

flutter pub get
flutter pub run flutter_launcher_icons

3️⃣ Configure Android App Details

🔹 Application ID (Package Name)

Open:

android/app/build.gradle

Set:

applicationId "com.yourcompany.yourapp"

⚠️ Cannot be changed after publishing


🔹 Minimum SDK (Recommended 2026)

minSdkVersion 23
targetSdkVersion 34

4️⃣ Create a Keystore (VERY IMPORTANT)

This signs your app forever. Do not lose it.

keytool -genkey -v \
-keystore upload-keystore.jks \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-alias upload

Move upload-keystore.jks to:

android/app/

🔹 Configure Signing

Create key.properties in android/:

storePassword=your_password
keyPassword=your_password
keyAlias=upload
storeFile=upload-keystore.jks

Edit android/app/build.gradle:

signingConfigs {
    release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['storePassword']
    }
}

buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}

5️⃣ Build Release App Bundle (AAB)

Google Play requires AAB, not APK.

flutter clean
flutter pub get
flutter build appbundle

Output:

build/app/outputs/bundle/release/app-release.aab

6️⃣ Create App in Google Play Console

  1. Open Play Console
  2. Click Create app
  3. Fill:
    • App name
    • Default language
    • App type → App
    • Category → App or Game
    • Select Free/Paid

7️⃣ Complete Play Console Setup

🔹 App Access

  • Select All functionality available

🔹 Store Listing

Upload:

  • App description
  • Short description
  • App icon (512×512)
  • Feature graphic (1024×500)
  • Screenshots (phone required)

🔹 Privacy Policy (Mandatory)

  • Host on GitHub Pages / website / Google Docs (public)
  • Add URL in Play Console

🔹 Data Safety Form

Declare:

  • What data you collect (email, location, etc.)
  • How it’s used
  • If data is encrypted

⚠️ Incorrect info can cause rejection.


🔹 Content Rating

  • Fill questionnaire
  • Get automatic rating

🔹 Target Audience

  • Select age groups
  • If under 13, stricter rules apply

8️⃣ Upload App Bundle

  1. Go to Production → Releases
  2. Create new release
  3. Upload app-release.aab
  4. Add release notes
  5. Save

9️⃣ Enable Google Play App Signing

✔ Accept Google Play App Signing

  • Google manages your production key
  • You keep your upload key

(Strongly recommended)


🔟 Review & Publish

  1. Fix all warnings (green checkmarks)
  2. Click Submit for review
  3. Review time:
    • New apps: 2–7 days
    • Updates: few hours to 2 days

11️⃣ After Publishing

🔁 Updating App

  • Increase version:
version: 1.0.1+2
  • Build AAB again
  • Upload new release

🚨 Common Rejection Reasons (2026)

  • Missing privacy policy
  • Incorrect Data Safety answers
  • Broken login
  • App crashes
  • Misleading screenshots
  • Copyright violations

✅ Optional (Recommended)

  • Enable Crashlytics
  • Enable ANR monitoring
  • Add in-app updates
  • Use Play Integrity API