Android App Publishing Guide for Flutter (2026 Edition)
This guide provides a comprehensive, step-by-step process for preparing and publishing a Flutter application to the Google Play Store. It covers generating a signed release build, creating and configuring your app in the Google Play Console, and managing the release process.
Table of Contents
Section titled “Table of Contents”- Pre-Publication Checklist
- Generate a Signed Release Build for Flutter
- Create the App in Google Play Console
- Complete Your Store Listing & App Content
- Upload and Roll Out Your Release
- After Publication
1. Pre-Publication Checklist
Section titled “1. Pre-Publication Checklist”Before you begin the technical steps, gather all the necessary assets and information.
Required Items
Section titled “Required Items”- Google Play Developer Account: You need an active account. There is a one-time registration fee of $25.
- A Completed Flutter App: Your app should be tested and ready for release.
- High-Resolution App Icon:
- Format:
512x512pixels, 32-bit PNG with an alpha channel.
- Format:
- Feature Graphic:
- Format:
1024x500pixels, JPG or 24-bit PNG (no alpha). This is displayed at the top of your store listing.
- Format:
- Screenshots:
- Format: JPG or 24-bit PNG (no alpha).
- You must provide a minimum of 2 screenshots for phones. You can also add screenshots for tablets (7-inch and 10-inch) and Wear OS if your app supports them.
- App Name: Maximum 30 characters.
- Short Description: Maximum 80 characters. A quick, catchy summary.
- Full Description: Maximum 4000 characters. A detailed explanation of your app’s features and benefits.
- Privacy Policy URL: A publicly accessible URL to your app’s privacy policy. This is mandatory.
- Demo Account (If Applicable): If your app requires a login, you must provide a demo username and password for the review team.
2. Generate a Signed Release Build for Flutter
Section titled “2. Generate a Signed Release Build for Flutter”Google Play requires that all apps be digitally signed with a certificate. You will generate an “upload key” which you will use to sign your app bundle. Google will then use this to verify your identity and re-sign your app with an optimized deployment key.
Step 1: Create an Upload Keystore
Section titled “Step 1: Create an Upload Keystore”You only need to do this once for your app.
-
Open your terminal.
-
Run the following command. Replace
<keystore-name>and<alias-name>with your own values (e.g.,my-release-keyandmy_app_alias).Terminal window keytool -genkey -v -keystore <keystore-name>.jks -keyalg RSA -keysize 2048 -validity 10000 -alias <alias-name> -
The tool will prompt you to create a password for the keystore and another for the key. It will also ask for your organization details.
⚠️ CRITICAL WARNING
Back up your keystore file (
.jks) and securely store your passwords! If you lose your upload key, you will NEVER be able to update your app again. Store it in a safe place like a password manager and a secure cloud drive.
Step 2: Configure Signing in Your Flutter Project
Section titled “Step 2: Configure Signing in Your Flutter Project”-
Move the
.jksfile you just created into theandroid/appdirectory of your Flutter project. -
Create a new file named
android/key.properties. Do not check this file into public source control. Add it to your.gitignorefile immediately. -
Add the following content to
android/key.properties, replacing the placeholder values with the passwords, alias, and filename from the previous step.storePassword=your_keystore_passwordkeyPassword=your_key_passwordkeyAlias=your_alias_namestoreFile=../app/<keystore-name>.jks
Step 3: Reference the Keystore in Gradle
Section titled “Step 3: Reference the Keystore in Gradle”-
Open
android/app/build.gradle. -
Add the following code snippet at the top of the file, before the
android { ... }block. This loads thekey.propertiesfile.def keystoreProperties = new Properties()def keystorePropertiesFile = rootProject.file('key.properties')if (keystorePropertiesFile.exists()) {keystoreProperties.load(new FileInputStream(keystorePropertiesFile))} -
Inside the
android { ... }block, find thebuildTypessection and add asigningConfigsblock just above it. This tells Gradle how to sign your release build....signingConfigs {release {keyAlias keystoreProperties['keyAlias']keyPassword keystoreProperties['keyPassword']storeFile file(keystoreProperties['storeFile'])storePassword keystoreProperties['storePassword']}}buildTypes {release {// You need to add the following linesigningConfig signingConfigs.release...}}...
Step 4: Build the Android App Bundle (.aab)
Section titled “Step 4: Build the Android App Bundle (.aab)”Now you are ready to build the release file. Google Play strongly prefers the Android App Bundle (.aab) format as it allows for optimized, smaller downloads for users.
-
In your terminal, at the root of your Flutter project, run:
Terminal window flutter build appbundle -
Once the build is complete, you will find your signed app bundle at:
build/app/outputs/bundle/release/app-release.aab
3. Create the App in Google Play Console
Section titled “3. Create the App in Google Play Console”- Log in to the Google Play Console.
- Click the Create app button.
- Fill in the initial details:
- App name: The name of your app.
- Default language: The primary language for your store listing.
- App or game: Select “App”.
- Free or paid: Choose whether your app is free or requires payment to download.
- Accept the declarations and click Create app.
You will be taken to the app’s Dashboard, which provides a helpful checklist of the remaining steps.
4. Complete Your Store Listing & App Content
Section titled “4. Complete Your Store Listing & App Content”From the left-hand menu, navigate through the “Grow” and “Policy” sections to complete your app’s profile.
Main Store Listing
Section titled “Main Store Listing”Go to Grow > Store presence > Main store listing.
- App name, Short description, Full description: Fill these in with the text you prepared.
- Graphics:
- Upload your App icon (
512x512). - Upload your Feature graphic (
1024x500). - Upload your Phone screenshots.
- Optionally, add a link to a YouTube video and upload tablet screenshots.
- Upload your App icon (
Localize Your Store Listing
Section titled “Localize Your Store Listing”If you want your app to display different languages in the Play Store based on the user’s language preferences (e.g., showing Chinese name and description to Chinese users, and English to English users):
- In the Main store listing page, click Manage translations.
- Click Add translation and select the language you want to support (e.g., Chinese (Traditional) – zh-TW).
- For each added language, fill in the localized version of:
- App Name
- Short Description
- Full Description
- (Optional) You can also upload localized Screenshots or Feature Graphics under that language’s specific tab if they contain text in that language.
- Users in regions where you haven’t provided a specific translation will see your configured Default language version.
Go to Grow > Store presence > Store settings.
- App category: Select the most appropriate category.
- Contact details: Provide an email address, and optionally a phone number and website.
App Content Section
Section titled “App Content Section”This is a critical section for policy compliance. Navigate to Policy > App content in the left menu. You must complete every subsection.
- Privacy Policy: Enter the URL to your privacy policy.
- Ads: Declare whether your app contains ads.
- App access:
- Select “All functionality is available without special access” if your app is fully open.
- If your app has a login, select “All or some functionality is restricted” and provide the demo account credentials you prepared.
- Content ratings: Click “Start questionnaire”. You will be taken through the IARC rating wizard. Answer truthfully to get an accurate age rating for your app.
- Target audience and content: Specify the target age group for your app. Be careful here, as selecting younger audiences may subject your app to more stringent review policies.
- Data safety: This is Google’s equivalent of Apple’s nutrition labels.
- You must declare what types of user data your app collects and shares (e.g., Personal info, Financial info, Location, etc.).
- For each data type, you must explain why you collect it (e.g., App functionality, Analytics).
- This form is detailed and mandatory. Take your time to fill it out accurately.
5. Upload and Roll Out Your Release
Section titled “5. Upload and Roll Out Your Release”It is best practice to test your app with a small group before a full production rollout.
- From the left menu, go to Testing > Internal testing. This is the safest place for a first upload.
- Click Create new release.
- App signing by Google Play: The console will show a notice about App Signing. Click Continue. Google will manage your app’s deployment key, which is more secure.
- App bundles: Click Upload and select the
app-release.aabfile you generated earlier. - Release details:
- Give the release a name (e.g.,
1.0.0). - Write Release notes for your users, explaining what’s new in this version.
- Give the release a name (e.g.,
- Click Save, then Review release.
- If there are no errors, click Start rollout to internal testing.
After you have confirmed the internal test build works as expected, you can promote the release to Production or create a new production release and upload the same .aab file. The process is identical: navigate to Production, create a release, upload the bundle, and roll it out.
6. After Publication
Section titled “6. After Publication”- Review Time: App review times can vary from a few hours to several days.
- Updates: Once your app is live, you can submit updates by following the same process: build a new signed
.aabfile with an incremented version number (inpubspec.yaml) and create a new release in the Play Console.
Congratulations! Your Flutter app is on its way to the Google Play Store.