Docs: AAB build steps + Play Billing testing checklist
This commit is contained in:
105
DEVELOPMENT.md
Normal file
105
DEVELOPMENT.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# MindMachine - Development Notes
|
||||
|
||||
## Build prerequisites
|
||||
|
||||
- JDK 17
|
||||
- Android Studio (recommended)
|
||||
- Android SDK installed
|
||||
- `local.properties` configured (Android Studio usually writes this)
|
||||
|
||||
|
||||
## Build outputs (where files end up)
|
||||
|
||||
- Debug APK
|
||||
- Task: `assembleDebug`
|
||||
- Output: `app/build/outputs/apk/debug/app-debug.apk`
|
||||
|
||||
- Release AAB (Android App Bundle)
|
||||
- Task: `bundleRelease`
|
||||
- Output: `app/build/outputs/bundle/release/app-release.aab`
|
||||
|
||||
- Debug AAB (rarely needed)
|
||||
- Task: `bundleDebug`
|
||||
- Output: `app/build/outputs/bundle/debug/app-debug.aab`
|
||||
|
||||
|
||||
## Create an AAB (CLI)
|
||||
|
||||
From the repo root:
|
||||
|
||||
```bash
|
||||
cd MindMachine
|
||||
./gradlew bundleRelease
|
||||
```
|
||||
|
||||
The bundle will be at:
|
||||
|
||||
```text
|
||||
app/build/outputs/bundle/release/app-release.aab
|
||||
```
|
||||
|
||||
(Optional) clean rebuild:
|
||||
|
||||
```bash
|
||||
./gradlew clean bundleRelease
|
||||
```
|
||||
|
||||
|
||||
## Create an AAB (Android Studio)
|
||||
|
||||
1. **Build** → **Generate Signed Bundle / APK…**
|
||||
2. Select **Android App Bundle**
|
||||
3. Select **Release**
|
||||
4. Select the **upload keystore**
|
||||
5. Finish
|
||||
|
||||
|
||||
## Signing setup (release bundles)
|
||||
|
||||
Release signing is configured in `app/build.gradle.kts` to load credentials from:
|
||||
|
||||
- `keystore/upload-keystore.properties`
|
||||
|
||||
That file should contain the standard fields:
|
||||
|
||||
```properties
|
||||
storeFile=keystore/<your-upload-keystore>.jks
|
||||
storePassword=<password>
|
||||
keyAlias=<alias>
|
||||
keyPassword=<password>
|
||||
```
|
||||
|
||||
Notes:
|
||||
- Treat `upload-keystore.properties` as **secret**. Do not share it publicly.
|
||||
- On Google Play you typically use **Play App Signing**. You upload with your **upload key**, Google signs for distribution.
|
||||
|
||||
|
||||
## Play Billing testing (subscribe/buy) checklist
|
||||
|
||||
Important: **Billing only works reliably when the app is installed from Google Play** (Internal/Closed testing). Sideloaded builds often fail Billing flows.
|
||||
|
||||
1. **Play Console**
|
||||
- Create your **in-app products** and/or **subscriptions** (base plans/offers).
|
||||
- Make sure each product is in an **Active** state.
|
||||
|
||||
2. **Add testers**
|
||||
- Add your tester Gmail(s) to the app’s **Internal testing** (or Closed testing) track.
|
||||
- Also add the same Gmail(s) to **Play Console → Setup → License testing**.
|
||||
|
||||
3. **Upload AAB + publish to the test track**
|
||||
- Upload the latest `app-release.aab` to the test track.
|
||||
- Publish/roll out the test release.
|
||||
|
||||
4. **Install from Play Store**
|
||||
- On the device, log into the Play Store using the tester account.
|
||||
- Install the app from the test track (Play will show it as available to that tester).
|
||||
|
||||
5. **Payment profile / payment method (if prompted)**
|
||||
- If Google prompts for payment info on the tester account, add a payment method in:
|
||||
- Play Store → **Payments & subscriptions** → **Payment methods**
|
||||
- (and/or set up the Google Payments profile for that account)
|
||||
- Test purchases will use Google’s **test purchase flow** (no real charge).
|
||||
|
||||
6. **Verify in the app**
|
||||
- Trigger the subscribe/buy flow and confirm the purchase dialog appears.
|
||||
- Confirm acknowledgements/entitlements are applied as expected.
|
||||
Reference in New Issue
Block a user