Publishing Flutter App to Google Play Store
Publishing a Flutter application to the Google Play Store means preparing the application, creating a production-ready Android App Bundle (AAB), configuring Google Play Console, completing the required app information, testing the release, and submitting it for review.
For new Android applications, Google Play uses the Android App Bundle format as the standard publishing format. Flutter provides the flutter build appbundle command for generating the release bundle. :contentReference[oaicite:0]{index=0}
1. What is Google Play Store?
Google Play Store is Google's official distribution platform for Android applications. Developers can publish applications so that users can discover, install, update, and use them on compatible Android devices.
A Flutter application can be developed using Flutter and Dart and then packaged as an Android App Bundle for Google Play distribution.
2. Flutter App Publishing Flow
Flutter Application
↓
Complete Development
↓
Test Application
↓
Prepare Production Configuration
↓
Update Version
↓
Configure Application ID
↓
Configure Release Signing
↓
Build Android App Bundle
↓
Create / Configure Play Console App
↓
Complete Store Listing
↓
Complete App Content Information
↓
Create Testing Release
↓
Test Application
↓
Create Production Release
↓
Submit for Review
↓
Google Play Review
↓
Application Published
3. Requirements Before Publishing
Before publishing a Flutter application, several development and Google Play requirements should be completed.
- A working Flutter application
- Flutter SDK and Android development environment
- Android SDK
- Android Studio or another suitable development environment
- A Google Play Console developer account
- A unique application ID
- Production application icon
- Production application name
- Application screenshots
- Application description
- Privacy policy where required
- Data safety information
- Content rating information
- Target audience information
- Release signing configuration
- Production Android App Bundle
4. Check Flutter Environment
Before creating the release build, verify the Flutter development environment.
flutter doctor
For detailed information:
flutter doctor -v
Also verify the Flutter version:
flutter --version
5. Prepare the Flutter Project
Make sure the project is in a stable state before creating the production build.
Get Dependencies
flutter pub get
Check for Outdated Packages
flutter pub outdated
Clean Previous Build Files
flutter clean
flutter pub get
6. Test the Application Before Publishing
Never publish an application without testing the complete production workflow.
Important Areas to Test
- Application startup
- Login and registration
- Navigation
- API requests
- Database operations
- Firebase services
- Push notifications
- Image loading
- File upload and download
- Payment functionality
- Forms and validation
- Permissions
- Deep links
- Offline behavior
- Error handling
- Application update behavior
7. Test Release Mode
A debug build and a release build can behave differently. Therefore, test the application in release mode before publishing.
flutter run --release
Testing release mode helps identify problems that may not appear during normal debug development.
8. Update Application Version
Flutter applications commonly define their version in pubspec.yaml.
version: 1.0.0+1
| Part | Purpose |
|---|
| 1 | Major version |
| 0 | Minor version |
| 0 | Patch version |
| 1 | Build number |
Example
version: 1.2.0+10
When publishing an update, the Android version code must be greater than the version code of the currently published version. The package name must remain the same and the update must use the appropriate signing identity. :contentReference[oaicite:1]{index=1}
9. Configure a Unique Application ID
The Android application ID uniquely identifies the application on Google Play.
Example
applicationId = "com.companyname.myapp"
Choose the application ID carefully because the package identity is important for future updates.
Example Project Identity
Application Name: My Flutter Store
Application ID: com.example.mystore
Version: 1.0.0
Build Number: 1
10. Configure the Application Name
The production application should use its final public name.
For Android, review the application label in the manifest:
android:label="My Flutter Store"
android:icon="@mipmap/ic_launcher">
11. Configure the Application Icon
The default Flutter application icon should normally be replaced with the final production icon.
Icon Checklist
- Use the final brand logo.
- Check the icon on different Android devices.
- Make sure the icon is not blurry.
- Check adaptive icon configuration.
- Verify that the icon is correctly displayed in the launcher.
- Use appropriate artwork and avoid misleading store branding.
12. Review Android Manifest
The Android manifest is located at:
android/app/src/main/AndroidManifest.xml
Review application configuration, permissions, activities, services, deep links, and other Android-specific settings before release.
Example
android:label="My Flutter App"
android:icon="@mipmap/ic_launcher">
...
13. Review Android Permissions
Only request permissions that are required by the application.
| Permission Type | Possible Purpose |
|---|
| Internet | API and network communication |
| Camera | Taking photographs or scanning |
| Location | Location-based functionality |
| Notifications | Push or local notifications |
| Media/File Access | Working with files or media where permitted |
Also remember that third-party packages can introduce Android permissions, so review the final application configuration.
14. Configure Production API
Make sure the release application communicates with production services rather than development servers.
Development URL
http://localhost:3000
Production URL
https://api.example.com
Before publishing, verify:
- Production API URLs
- Authentication configuration
- Database configuration
- Firebase project
- Payment gateway configuration
- Push notification configuration
- HTTPS configuration
15. Configure Release Signing
Android applications distributed through Google Play need to be signed. Flutter's Android release process supports configuring a release signing key, and Google Play App Signing can manage the app signing key for distribution.
Important Signing Files
android/key.properties
upload-keystore.jks
Signing credentials should be kept private and should not be committed to public source control.
16. Generate the Android App Bundle
The Android App Bundle is the preferred publishing format for Google Play.
flutter build appbundle
Flutter creates the release bundle at:
build/app/outputs/bundle/release/app.aab
Flutter's documentation identifies App Bundle as the preferred Play Store release format. :contentReference[oaicite:2]{index=2}
17. AAB vs APK
| Feature | AAB | APK |
|---|
| Full Name | Android App Bundle | Android Package |
| Google Play Publishing | Preferred format | Not the standard format for new Play apps |
| Direct Installation | Not normally installed directly | Can be installed directly |
| Optimization | Google Play generates optimized APKs | Developer distributes the APK |
| File Extension | .aab | .apk |
18. Create a Google Play Console Account
Google Play Console is the platform used to create, configure, test, and publish Android applications on Google Play.
Before publishing, the developer must provide the required developer account information and complete applicable verification and Play Console requirements. :contentReference[oaicite:3]{index=3}
Account Information
- Developer identity information
- Legal information
- Contact email
- Contact phone number
- Payment profile where applicable
- Developer account information
19. Create a New App in Play Console
After signing in to Google Play Console, create a new application and provide the initial app information.
Typical Information
- Application name
- Default language
- Application type
- Free or paid status
- Developer contact information
After creating the app, Play Console provides a dashboard containing the tasks that must be completed before launch. :contentReference[oaicite:4]{index=4}
20. Play Console Dashboard
The Play Console dashboard guides developers through important setup and publishing tasks.
Play Console
↓
Select Application
↓
Dashboard
↓
Complete App Setup
↓
Testing
↓
Production Release
↓
Review and Publish
21. Complete Store Listing
The store listing is the information users see when viewing the application on Google Play.
Important Store Listing Information
- App name
- Short description
- Full description
- Application icon
- Screenshots
- Feature graphic where applicable
- Category
- Tags where applicable
- Contact information
Google recommends that store listing information accurately describe what the application actually does. Misleading descriptions or screenshots can cause problems during review. :contentReference[oaicite:5]{index=5}
22. Write a Good App Description
Example Short Description
Manage your daily tasks with a simple and powerful Flutter application.
Example Full Description
My Flutter App helps users organize their daily tasks,
track progress, and manage important activities from
a simple mobile interface.
Features:
• Create tasks
• Update tasks
• Mark tasks as completed
• Search tasks
• Organize daily activities
The description should accurately represent the actual functionality of the application.
23. Upload Screenshots
Screenshots demonstrate the application's user interface and help users understand its functionality before installation.
Recommended Screenshot Preparation
- Capture the final production application.
- Use clear and readable screens.
- Show important features.
- Avoid development/debug information.
- Use consistent visual presentation.
- Make sure screenshots accurately represent the current application.
24. Select Application Category
Select the category that accurately represents the purpose of the application.
Example Categories
- Education
- Business
- Finance
- Productivity
- Shopping
- Entertainment
- Health & Fitness
- Tools
The selected category should match the actual functionality of the application.
25. Provide Contact Details
Provide appropriate contact information so users and Google Play can contact the developer where required.
- Developer email
- Website where applicable
- Support information
- Phone number where required
26. Privacy Policy
Applications that collect or process user data may need to provide a privacy policy and complete the applicable Data safety information in Play Console.
The privacy policy should accurately explain how the application collects, uses, stores, and shares user information.
Privacy Policy Topics
- Data collected
- Purpose of data collection
- Data sharing
- Data retention
- Security practices
- User rights
- Contact information
Google Play requires developers to provide applicable privacy policy and Data safety information before submission. :contentReference[oaicite:6]{index=6}
27. Complete Data Safety Section
The Data safety section communicates information about how the application collects, shares, and handles user data.
Examples of Data Categories
- Personal information
- Financial information
- Location
- Photos and videos
- App activity
- Device or other identifiers
The answers should accurately reflect the application's behavior and the behavior of included SDKs and services.
28. Complete Content Rating
Google Play requires developers to provide information used to determine the appropriate content rating for an application.
Questions Can Include Topics Such As
- Violence
- Sexual content
- Language
- Controlled substances
- Gambling
- User-generated content
Answer the questionnaire according to the actual content and functionality of the application.
29. Select Target Audience
Provide accurate information about the intended audience of the application.
If the application is intended for children or includes children as part of its target audience, additional Google Play requirements may apply.
30. App Access and Login Credentials
If reviewers cannot access important functionality without logging in, provide the required review access information.
Example
Demo Email:
[email protected]
Demo Password:
DemoPassword123
Do not use invalid or expired credentials. Google Play requires developers to provide an active demo account and other resources needed for review when app functionality is restricted by login. :contentReference[oaicite:7]{index=7}
31. Target API Level
Google Play has target API level requirements that change over time. As of August 31, 2026, new apps and app updates generally need to target Android 16 (API level 36) or higher, with separate requirements for certain form factors such as Wear OS and Android TV. :contentReference[oaicite:8]{index=8}
Before publishing, verify the current Google Play target API requirements and configure the Flutter Android project accordingly.
Example
targetSdk = 36
The exact configuration should match the Android Gradle setup and current Flutter/Android tooling used by the project.
32. Create an Internal Testing Release
Testing is an important part of the Google Play publishing process. Play Console provides internal, closed, and open testing tracks before production.
Testing Flow
App Bundle
↓
Internal Testing
↓
Closed Testing
↓
Open Testing
↓
Production
Internal testing is useful for quickly distributing a build to a small group of testers.
33. Internal Testing
Internal testing allows developers to distribute an application to a limited group of testers before making it publicly available.
Google Play currently supports an internal testing track with up to 100 selected testers. :contentReference[oaicite:9]{index=9}
Internal Testing Process
- Open the application in Play Console.
- Go to the testing section.
- Select Internal testing.
- Create a release.
- Upload the AAB.
- Add testers.
- Save the release.
- Roll out the testing release.
- Share the testing access with testers.
34. Closed Testing
Closed testing allows a selected group of testers to evaluate the application before public release.
It is useful for applications that need more extensive testing than a small internal team can provide.
Important Requirement for Some Personal Developer Accounts
Personal developer accounts created after November 13, 2023 currently have specific testing requirements before production access. Google Play states that such accounts must run a closed test with at least 12 testers opted in continuously for at least 14 days before applying for production access. :contentReference[oaicite:10]{index=10}
35. Open Testing
Open testing allows a broader group of users to participate in testing through Google Play.
Users can join the test and provide feedback before the production release.
36. Create a Production Release
After completing the required setup and testing, create a production release.
General Process
- Open Play Console.
- Select the application.
- Open the Production track.
- Create a new release.
- Upload the Android App Bundle.
- Review the release details.
- Add release notes.
- Save the release.
- Review the changes.
- Submit or roll out the release as permitted by the account and Play Console workflow.
Google Play documents production as a release track available for making the application available to users in selected countries and regions. :contentReference[oaicite:11]{index=11}
37. Upload the Android App Bundle
The Flutter-generated AAB can be uploaded to the appropriate Play Console release track.
Flutter Command
flutter build appbundle
Generated File
build/app/outputs/bundle/release/app.aab
Upload this production bundle to Play Console after completing release signing and testing.
38. Add Release Notes
Release notes explain what is new or improved in the current application version.
Example
Version 1.2.0
• Improved application performance
• Added new task management features
• Improved login experience
• Fixed notification issues
• Improved overall stability
Release notes should describe actual changes in the submitted version.
39. Review Release Before Publishing
Before submitting the application, carefully review all information.
Final Review
- Application name
- Application ID
- Version code
- Version name
- App bundle
- Store listing
- Screenshots
- Description
- Privacy policy
- Data safety information
- Content rating
- Target audience
- App access information
- Permissions
- Pricing
- Countries/regions
- Release notes
40. Pricing and Availability
Configure whether the application is free or paid and select the countries or regions where the application should be distributed.
Pricing and availability settings should be reviewed carefully because changing some commercial settings later can have additional implications.
41. Google Play Review
After submitting the application, Google Play may review the application and its associated information before it becomes publicly available.
Review time can vary. Google notes that certain developer accounts may receive longer review times, including up to seven days or longer in exceptional cases. :contentReference[oaicite:12]{index=12}
Possible Review Outcomes
Submitted
↓
In Review
↓
Approved
↓
Published
If Google identifies a policy or technical issue, the developer may need to make corrections and submit a new version or updated information.
42. Common Reasons for Publishing Problems
| Problem | Possible Cause |
|---|
| Version code error | Build number is not greater than the previous version |
| Package name issue | Application ID does not match the existing application |
| Signing problem | Incorrect signing configuration |
| Target API problem | Application does not meet current target API requirements |
| Missing privacy information | Required privacy policy or Data safety information is incomplete |
| Login access problem | Reviewers cannot access restricted application functionality |
| Misleading store listing | Screenshots or descriptions do not accurately represent the app |
| Policy issue | Application or content does not comply with Google Play policies |
| Testing requirement | Applicable developer account has not completed required testing |
43. Updating an Existing Flutter App
Publishing an update is different from publishing the first version.
Update Requirements
- Use the same package/application ID.
- Increase the version code.
- Use the correct signing configuration.
- Build a new AAB.
- Test the update.
- Upload the new AAB.
- Provide release notes.
Google Play requires the updated app bundle to use the same package name, a greater version code, and the appropriate signing certificate as the existing application. :contentReference[oaicite:13]{index=13}
44. Example: Updating a Flutter App
Previous Version
version: 1.0.0+1
New Version
version: 1.1.0+2
Build
flutter clean
flutter pub get
flutter build appbundle
Output
build/app/outputs/bundle/release/app.aab
Upload the new AAB to the appropriate Play Console track.
45. Play App Signing
Google Play App Signing is used to manage the app signing key for applications distributed through Google Play.
Concept
Developer
↓
Upload Key
↓
Google Play
↓
App Signing Key
↓
Optimized APKs
↓
Users' Devices
Keep the upload keystore and credentials secure even when Play App Signing is enabled.
46. App Bundle Processing
When an AAB is uploaded, Google Play can generate optimized APKs appropriate for users' devices.
Flutter App
↓
AAB
↓
Google Play Processing
↓
Device-specific APKs
↓
User Installation
This is one of the main advantages of using the Android App Bundle publishing model.
47. Check the Uploaded Bundle
Play Console provides tools for inspecting uploaded app bundles and the APKs generated from them.
Developers can review version information, supported devices, and generated artifacts through the releases and bundles area of Play Console. :contentReference[oaicite:14]{index=14}
48. Google Play Technical Quality
Before publishing, test application stability and performance. Google Play monitors technical quality indicators such as crashes and application-not-responding events.
Applications should be tested thoroughly to avoid production crashes, ANRs, broken functionality, and excessive resource usage. :contentReference[oaicite:15]{index=15}
Performance Checklist
- Fast application startup
- Smooth scrolling
- Efficient API requests
- Efficient image loading
- Low unnecessary memory usage
- Stable navigation
- Reliable background operations
- Proper error handling
49. Security Checklist
- Do not hard-code passwords.
- Do not publish private API keys.
- Protect authentication tokens.
- Use HTTPS.
- Secure signing credentials.
- Do not commit keystore files to public repositories.
- Remove development credentials.
- Use production security rules.
- Review Firebase security rules.
- Test authentication and authorization.
50. Complete Google Play Publishing Checklist
| Task | Status |
|---|
| Flutter project tested | ☐ |
| Release mode tested | ☐ |
| Application name finalized | ☐ |
| Application icon finalized | ☐ |
| Application ID verified | ☐ |
| Version updated | ☐ |
| Build number increased | ☐ |
| Production API configured | ☐ |
| Permissions reviewed | ☐ |
| Firebase configuration checked | ☐ |
| Signing configured | ☐ |
| Keystore protected | ☐ |
| AAB generated | ☐ |
| Store listing completed | ☐ |
| Screenshots uploaded | ☐ |
| Privacy policy completed | ☐ |
| Data Safety completed | ☐ |
| Content rating completed | ☐ |
| Target audience completed | ☐ |
| App access information completed | ☐ |
| Testing completed | ☐ |
| Production release created | ☐ |
| Release notes added | ☐ |
| Final review completed | ☐ |
51. Complete Practical Publishing Example
Step 1: Clean the Project
flutter clean
Step 2: Get Dependencies
flutter pub get
Step 3: Test the Application
flutter run --release
Step 4: Update Version
version: 1.0.0+1
Step 5: Build the App Bundle
flutter build appbundle
Step 6: Find the AAB
build/app/outputs/bundle/release/app.aab
Step 7: Open Google Play Console
Sign in to Play Console and select or create the application.
Step 8: Complete App Setup
Complete the required store listing, app content, data safety, content rating, target audience, and other required information.
Step 9: Create a Testing Release
Upload the AAB to an appropriate testing track and test the application.
Step 10: Create Production Release
After completing the applicable testing and setup requirements, create the production release and submit it through the Play Console workflow.
52. Best Practices
- Always test the release build before publishing.
- Use Android App Bundle for Google Play publishing.
- Keep the application ID stable.
- Increase the version code for every update.
- Protect the upload keystore.
- Never publish private credentials.
- Use production APIs in the release build.
- Complete the Data safety section accurately.
- Provide valid reviewer access when required.
- Make store screenshots match the actual application.
- Keep application descriptions accurate.
- Test on multiple physical Android devices.
- Use internal or closed testing before production where appropriate.
- Check current Google Play requirements before every major release.
- Keep a secure copy of production release artifacts.
53. Common Interview Questions
Q1. What is the preferred format for publishing a new Flutter Android application on Google Play?
The Android App Bundle (AAB) is the standard publishing format for new applications on Google Play.
Q2. Which Flutter command creates an AAB?
flutter build appbundle
Q3. Where is the Flutter-generated AAB located?
build/app/outputs/bundle/release/app.aab
Q4. What is an application ID?
The application ID uniquely identifies an Android application and is used by Google Play to identify the application package.
Q5. Why must the version code be increased?
Google Play uses the version code to distinguish newer Android application builds from older builds.
Q6. What is Google Play Console?
Google Play Console is the platform developers use to configure, test, publish, update, and monitor Android applications distributed through Google Play.
Q7. What is the purpose of internal testing?
Internal testing allows developers to distribute an application to a small group of testers before wider distribution.
Q8. What is an Android App Bundle?
An Android App Bundle is a publishing package containing an application's compiled resources and code. Google Play can use it to generate optimized APKs for users' devices.
Q9. Why is release signing important?
Android applications need appropriate digital signing for distribution and updates.
Q10. What should be checked before publishing?
Application identity, version, signing, store listing, privacy information, Data safety, content rating, target audience, testing, permissions, production configuration, and the final AAB should all be reviewed.
54. Summary
Publishing a Flutter application to Google Play Store involves much more than generating an APK. The application should first be tested and prepared for production, configured with the correct application ID and version, digitally signed, and built as an Android App Bundle.
The overall process can be summarized as:
Develop
↓
Test
↓
Prepare Release
↓
Configure Signing
↓
Build AAB
↓
Create Play Console App
↓
Complete Store Listing
↓
Complete App Content
↓
Testing Track
↓
Production Release
↓
Google Play Review
↓
Published App
Google Play requirements can change over time, so developers should verify the current Play Console policies, target API requirements, testing requirements, and publishing requirements before submitting each production release. :contentReference[oaicite:16]{index=16}
55. Learn Flutter with JustAcademy
JustAcademy Flutter Training Course
Register for Flutter Course Demo