how to sign your APK/AAB with a keystore (so it’s ready for Play Store upload)

Let’s get your Flutter app signed so you can upload it to the Google Play Store.
By default, Flutter builds unsigned APKs, but Play Store requires a signed release.

Here’s the step-by-step


Step 1: Create a Keystore

Open Command Prompt (CMD/PowerShell) and run (replace your_name and your_company):

keytool -genkey -v -keystore C:\Users\<YourUsername>\my-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
  • It will ask for a password → remember it
  • It will generate a file my-key.keystore

Make sure to keep this file safe and backed up — you’ll need it for every future update of your app.


Step 2: Move Keystore to Project

Move my-key.keystore to your Flutter project, e.g.:

my_app/android/app/my-key.keystore

Step 3: Configure key.properties

Create a new file inside android folder:
android/key.properties

storePassword=your-password
keyPassword=your-password
keyAlias=my-key-alias
storeFile=my-key.keystore

Step 4: Update build.gradle

Open android/app/build.gradle and add this near the top:

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file("key.properties")
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

Then inside android { signingConfigs { ... } }, add:

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

And inside buildTypes { ... } update release:

buildTypes {
    release {
        signingConfig signingConfigs.release
        minifyEnabled true
        shrinkResources true
        // optionally enable proguard if needed
    }
}

Step 5: Build Signed APK/AAB

Now run:

flutter build apk --release

Output:

build/app/outputs/flutter-apk/app-release.apk

Or for Play Store AAB:

flutter build appbundle --release

Output:

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

Now your APK/AAB is signed and ready to upload to Google Play Console




Leave a Reply