When publishing your Flutter app on Google Play, you cannot use a debug APK or AAB. You must generate a release-signed bundle. Here’s a quick guide:
1. Generate a Keystore
keytool -genkey -v -keystore ~/my-release-key.keystore \ -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
This creates a keystore file. Keep it safe, as it will be used to sign your app.
2. Create key.properties
In the android/ folder of your project, create a key.properties file:
storePassword=your_keystore_password keyPassword=your_key_password keyAlias=my-key-alias storeFile=/absolute/path/to/my-release-key.keystore
3. Configure build.gradle
Flutter uses two Gradle files for Android. You need to configure both:
a) Project-level android/build.gradle
allprojects {
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = "../build"
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.evaluationDependsOn(":app")
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}
// Load keystore properties
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file("key.properties")
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
// Make it available to the app module
ext.keystoreProperties = keystoreProperties
b) App-level android/app/build.gradle
def keystoreProperties = rootProject.ext.keystoreProperties
android {
namespace = "com.example.quransecrets"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
defaultConfig {
applicationId = "com.example.quransecrets"
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled false
shrinkResources false
}
}
}
flutter {
source = "../.."
}
4. Build the Release AAB
Run the following command to generate a Play Store-ready App Bundle:
flutter build appbundle --release
Your signed AAB will be located at:
build/app/outputs/bundle/release/app-release.aab
5. Optional: Build a Release APK
If you also want a release APK for testing:
flutter build apk --release
It will be located in:
build/app/outputs/flutter-apk/app-release.apk
6. Verify the Signature
You can check if your AAB is signed properly with:
jarsigner -verify -verbose -certs app-release.aab
Now your Flutter app is signed and ready to be uploaded to the Google Play Store.

0 Comments