Run this command in your terminal (make sure you have Java installed):
keytool -genkey -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload- Keystore password: Choose a strong password (save this!)
- Key password: Choose a strong password (save this!)
- First and last name: Your name or company name
- Organizational unit: Your department/team
- Organization: Your company name
- City: Your city
- State: Your state/province
- Country code: Your 2-letter country code (e.g., US, IN, UK)
Move the generated upload-keystore.jks file to the android/ directory:
mv upload-keystore.jks android/Create android/key.properties file with your actual values:
storePassword=your_actual_keystore_password
keyPassword=your_actual_key_password
keyAlias=upload
storeFile=../upload-keystore.jksAdd these lines to your .gitignore file:
# Android signing
android/key.properties
android/upload-keystore.jks
flutter build apk --releaseflutter build appbundle --release- NEVER commit keystore files or key.properties to version control
- Keep multiple backups of your keystore file in secure locations
- If you lose your keystore, you cannot update your app on Play Store
- Store passwords securely (use a password manager)
- Make sure Java JDK is installed
- Add Java bin directory to your PATH
- On Windows: Usually
C:\Program Files\Java\jdk-XX\bin
- Check that key.properties file exists and has correct values
- Verify keystore file is in the correct location
- Ensure passwords match what you set during keystore generation
android/
├── key.properties # Your signing configuration
├── upload-keystore.jks # Your keystore file (keep secure!)
└── app/
└── build.gradle # Updated with signing config
After successful setup:
- Test the release build on a device
- Upload to Play Console for internal testing
- Complete Play Store listing
- Submit for review