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
- Open Play Console
- Click Create app
- 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
- Go to Production → Releases
- Create new release
- Upload
app-release.aab - Add release notes
- 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
- Fix all warnings (green checkmarks)
- Click Submit for review
- 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