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