This guide explains how to create downloadable APK releases for MentorMe using GitHub Actions.
This is the easiest way to create a release. Simply push a version tag:
# Create a version tag (e.g., v1.0.0)
git tag v1.0.0
# Push the tag to GitHub
git push origin v1.0.0What happens next:
- GitHub Actions automatically detects the tag
- Builds the release APK and AAB
- Creates a GitHub Release with auto-generated release notes
- Attaches the APK and AAB files for download
You can also manually trigger a release from GitHub:
- Go to your repository on GitHub
- Click Actions tab
- Select Android Release workflow
- Click Run workflow button
- Enter the version (e.g.,
v1.0.0) - Click Run workflow
- Go to your GitHub repository
- Click on Releases (right sidebar)
- Find the version you want to download
- Under Assets, click on
mentor-me-vX.X.X.apk - The APK will download directly
Direct link format:
https://github.com/YOUR_USERNAME/mentor-me/releases/latest/download/mentor-me-vX.X.X.apk
If you need APKs from any commit (not just releases):
- Go to Actions tab
- Click on a completed workflow run
- Scroll to Artifacts section
- Download
debug-apksorrelease-apks
Follow semantic versioning: vMAJOR.MINOR.PATCH
- Major (v1.0.0 → v2.0.0): Breaking changes, major new features
- Minor (v1.0.0 → v1.1.0): New features, backwards compatible
- Patch (v1.0.0 → v1.0.1): Bug fixes, small improvements
Examples:
git tag v1.0.0 # First release
git tag v1.1.0 # Added new feature
git tag v1.1.1 # Bug fix
git tag v2.0.0 # Major updateRelease notes are automatically generated from git commits between tags.
To improve release notes:
- Write clear, descriptive commit messages
- Use conventional commits format:
feat: Add guided journaling feature fix: Resolve notification timing issue docs: Update installation instructions
By default, release APKs are signed with a debug key. For production distribution:
keytool -genkey -v -keystore mentor-me-release.keystore \
-alias mentor-me -keyalg RSA -keysize 2048 -validity 10000Go to Settings → Secrets → Actions and add:
ANDROID_KEYSTORE_BASE64- Base64-encoded keystore fileANDROID_KEYSTORE_PASSWORD- Keystore passwordANDROID_KEY_ALIAS- Key aliasANDROID_KEY_PASSWORD- Key password
Encode keystore to base64:
base64 -i mentor-me-release.keystore | pbcopy # macOS
base64 -w 0 mentor-me-release.keystore # LinuxThe workflow will automatically use signing keys if secrets are configured.
Include these instructions in your release notes or README:
- Android 12.0 (API 31) or higher - Required
- ARMv8 64-bit processor (ARM64 or ARM)
- 4GB+ RAM (6GB+ recommended for Local AI)
- 2GB free storage (if using Local AI features)
To check your Android version:
- Open Settings
- Go to About Phone
- Look for Android version
- If it says Android 11 or lower, this APK will NOT install
Why Android 12+? The app uses Google's LiteRT LLM library for on-device AI features, which requires Android 12 as the minimum SDK. This is a hard requirement and cannot be bypassed.
-
Check Android Version (see requirements above)
-
Download APK:
- Go to Releases
- Download the latest
mentor-me-vX.X.X.apk - (Optional) Download
.sha256file to verify integrity
-
Enable installation from unknown sources:
- Android 12-14:
- Settings → Apps → Special app access → Install unknown apps
- Select your browser (Chrome, Firefox, etc.)
- Toggle "Allow from this source"
- Android 11 and below:
- Settings → Security → Unknown sources (toggle on)
- Note: This APK won't install on Android 11 anyway due to minSdk requirement
- Android 12-14:
-
Install:
- Open the downloaded APK file from your Downloads folder
- Tap Install
- If Play Protect shows a warning, tap Install anyway
- Wait for installation to complete
- Open the app and enjoy! 🎉
After installation:
-
Set up AI provider:
- Choose Cloud AI (requires Anthropic API key) or Local AI (downloads 550MB model)
- For Cloud AI: Get API key from console.anthropic.com
-
Create your first goal:
- Tap the + button on the Goals screen
- Enter your goal title and details
-
Explore features:
- Journal: Quick notes and guided journaling
- Habits: Track daily habits with streak tracking
- Chat: Conversational AI mentor
- Pulse: Track wellness metrics (mood, energy, focus)
This repository has three workflows:
| Workflow | Trigger | Purpose | Artifacts |
|---|---|---|---|
| android-build.yml | Push to any branch | Continuous testing | Debug + Release APKs (30-90 days) |
| android-release.yml | Version tag push | Create public release | Permanent GitHub Release |
| - | Pull requests | Validation | None |
Most Common Cause: Your Android version is too old.
Solution:
-
Check your Android version:
- Settings → About Phone → Android version
- Required: Android 12.0 or higher
-
If you have Android 11 or lower:
- This APK will NOT work on your device
- The app requires Android 12+ due to LiteRT LLM library requirements
- Consider:
- Upgrading your device to Android 12+ (if available)
- Using a different device with Android 12+
- Waiting for a potential Android 11-compatible version (would require removing local AI features)
Other Possible Causes:
-
Corrupted download:
- Re-download the APK
- Verify checksum matches the
.sha256file - Try downloading on a different network
-
Architecture mismatch (rare):
- This app is built for ARM and ARM64 processors
- Older x86 Android devices (rare) won't work
- Check device specs to confirm ARM processor
-
Insufficient storage:
- Ensure at least 500MB free space for installation
- Check Settings → Storage
-
Previous version installed with different signature:
- Uninstall any previous version first
- Then install the new APK
Problem: Android security is blocking installation
Solution:
-
For "unknown sources" block:
- Enable "Install from unknown sources" (see installation steps above)
-
For Play Protect warning:
- Tap "More details" or "Install anyway"
- The APK is safe but not from Play Store, so Play Protect shows a warning
- This is normal for sideloaded APKs
Problem: APK file downloads but doesn't trigger installer
Solution:
- Open your Files or Downloads app
- Navigate to Downloads folder
- Tap the APK file directly
- Make sure you downloaded the
.apkfile, not the.sha256or.md5file
Problem: Workflow fails with permission error
Solution: Enable workflow write permissions:
- Go to Settings → Actions → General
- Under Workflow permissions, select Read and write permissions
- Click Save
Problem: You're trying to create a tag that already exists
Solution:
# Delete local tag
git tag -d v1.0.0
# Delete remote tag
git push --delete origin v1.0.0
# Create new tag
git tag v1.0.0
git push origin v1.0.0Problem: Release created but APK missing
Solution:
- Check the workflow run logs in Actions tab
- Look for build errors in the "Build release APK" step
- Verify Flutter version compatibility
GitHub provides download statistics for releases:
- Go to Releases
- Each release shows download count for each asset
- Use GitHub API for detailed analytics:
curl -H "Accept: application/vnd.github.v3+json" \ https://api.github.com/repos/YOUR_USERNAME/mentor-me/releases
-
Test before tagging:
- Merge all changes to main/master
- Wait for CI/CD to pass
- Test the APK from artifacts
- Then create the release tag
-
Meaningful versions:
- Don't skip versions
- Use pre-release tags for betas:
v1.0.0-beta.1 - Keep CHANGELOG.md updated
-
Communication:
- Announce new releases to users
- Include upgrade instructions
- Highlight breaking changes
-
Security:
- Never commit keystore files
- Rotate signing keys if compromised
- Use GitHub Secrets for sensitive data
Quick Reference:
# Create and push a release
git tag v1.0.0
git push origin v1.0.0
# View all tags
git tag -l
# Delete a tag
git tag -d v1.0.0
git push --delete origin v1.0.0