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