- Signing Configuration: Create
gradle/signing.propertieswith:STORE_FILE=/path/to/your/keystore.jks STORE_PASSWORD=your_store_password KEY_ALIAS=your_key_alias KEY_PASSWORD=your_key_password
./gradlew.bat :motmbrowser:assembleDebug./gradlew.bat :motmbrowser:assembleRelease./gradlew.bat :motmbrowser:bundleRelease| Build Type | Output Path |
|---|---|
| Debug APK | motmbrowser/build/outputs/apk/debug/ |
| Release APK | motmbrowser/build/outputs/apk/release/ |
| Release AAB | motmbrowser/build/outputs/bundle/release/ |
| Mapping File | motmbrowser/build/outputs/mapping/release/mapping.txt |
Release builds use R8 for code shrinking and obfuscation:
isMinifyEnabled = true- Enables R8 code shrinking and obfuscationisShrinkResources = true- Removes unused resources- ProGuard rules:
motmbrowser/src/main/proguard-motmbrowser.pro
With AGP 8.13.2+, the mapping file is automatically embedded in the AAB under BUNDLE-METADATA/com.android.tools.build.obfuscation/proguard.map.
When uploading to Google Play:
- Google Play extracts the mapping file automatically
- Crash reports in Play Console are deobfuscated automatically
- No manual mapping file upload required
For local debugging of obfuscated crash logs, use the mapping file at:
motmbrowser/build/outputs/mapping/release/mapping.txt
After building a release AAB, run the release build verification tests:
./gradlew.bat :motmbrowser:bundleRelease
./gradlew.bat :motmbrowser:testDebugUnitTest --tests "com.bammellab.motm.release.ReleaseBuildTest"These tests verify:
- The mapping file exists in the AAB at the correct location
- The mapping file contains valid R8 obfuscation data
- The mapping file format is compatible with Google Play Console
- The bundle contains minified DEX files
See TESTING.md for complete testing documentation.
Version numbers are configured in motmbrowser/build.gradle.kts:
val versionMajor = 2
val versionMinor = 9
val versionPatch = 0
val versionBuild = 2901Update these values before creating a new release.