9.8 KiB
Android Build Scripts Documentation
Author: Matthew Raymer Date: 2025-07-11 Status: ✅ COMPLETE - Full Android build system integration
Overview
The Android build system for TimeSafari has been integrated with the Vite mode-based pattern, providing consistent environment management and flexible build options across development, testing, and production environments.
Note: All Android builds should be invoked via npm run build:android*
scripts for consistency. The legacy build:capacitor:android*
scripts are now aliases for the corresponding build:android*
scripts.
Build Script Integration
Package.json Scripts
The Android build system is fully integrated into package.json
with the
following scripts:
Basic Build Commands
# Development builds (defaults to --mode development)
npm run build:android:dev # Development build
npm run build:android:test # Testing build
npm run build:android:prod # Production build
Build Type Commands
# Debug builds
npm run build:android:debug # Debug APK build
# Release builds
npm run build:android:release # Release APK build
Specialized Commands
# Android Studio integration
npm run build:android:studio # Build + open Android Studio
# Package builds
npm run build:android:apk # Build APK file
npm run build:android:aab # Build AAB (Android App Bundle)
# Utility commands
npm run build:android:clean # Clean build artifacts only
npm run build:android:sync # Sync Capacitor only
npm run build:android:assets # Generate assets only
Legacy Command
# Original script (maintains backward compatibility)
npm run build:android # Full build process
Script Usage
Direct Script Usage
The build-android.sh
script supports comprehensive command-line options:
# Basic usage
./scripts/build-android.sh [options]
# Environment-specific builds
./scripts/build-android.sh --dev --studio # Development + open studio
./scripts/build-android.sh --test --apk # Testing APK build
./scripts/build-android.sh --prod --aab # Production AAB build
# Utility operations
./scripts/build-android.sh --clean # Clean only
./scripts/build-android.sh --sync # Sync only
./scripts/build-android.sh --assets # Assets only
Command-Line Options
Option | Description | Default |
---|---|---|
--dev , --development |
Build for development environment | ✅ |
--test |
Build for testing environment | |
--prod , --production |
Build for production environment | |
--debug |
Build debug APK | ✅ |
--release |
Build release APK | |
--studio |
Open Android Studio after build | |
--apk |
Build APK file | |
--aab |
Build AAB (Android App Bundle) | |
--clean |
Clean build artifacts only | |
--sync |
Sync Capacitor only | |
--assets |
Generate assets only | |
-h , --help |
Show help message | |
-v , --verbose |
Enable verbose logging |
Build Process
Complete Build Flow
- Resource Check: Validate Android resources
- Cleanup: Clean Android app and build artifacts
- Capacitor Build: Build web assets with environment-specific mode
- Gradle Clean: Clean Gradle build cache
- Gradle Build: Assemble debug/release APK
- Capacitor Sync: Sync web assets to Android platform
- Asset Generation: Generate Android-specific assets
- Package Build: Build APK/AAB if requested
- Studio Launch: Open Android Studio if requested
Environment-Specific Builds
Development Environment (--dev
)
# Uses --mode development
npm run build:capacitor
# Builds with development optimizations and debugging enabled
Testing Environment (--test
)
# Uses --mode test
npm run build:capacitor -- --mode test
# Builds with testing configurations and test API endpoints
Production Environment (--prod
)
# Uses --mode production
npm run build:capacitor -- --mode production
# Builds with production optimizations and live API endpoints
Build Artifacts
APK Files
- Debug APK:
android/app/build/outputs/apk/debug/app-debug.apk
- Release APK:
android/app/build/outputs/apk/release/app-release.apk
AAB Files
- Release AAB:
android/app/build/outputs/bundle/release/app-release.aab
Build Locations
# APK files
android/app/build/outputs/apk/debug/
android/app/build/outputs/apk/release/
# AAB files
android/app/build/outputs/bundle/release/
# Gradle build cache
android/app/build/
android/.gradle/
Environment Variables
The build system automatically sets environment variables based on the build type:
Capacitor Environment
VITE_PLATFORM=capacitor
VITE_PWA_ENABLED=false
VITE_DISABLE_PWA=true
DEBUG_MIGRATIONS=0
Git Integration
VITE_GIT_HASH=<git-commit-hash>
# Automatically set from current git commit
Error Handling
Exit Codes
Code | Description |
---|---|
1 | Android cleanup failed |
2 | Web build failed |
3 | Capacitor build failed |
4 | Gradle clean failed |
5 | Gradle assemble failed |
6 | Capacitor sync failed |
7 | Asset generation failed |
8 | Android Studio launch failed |
9 | Resource check failed |
Common Issues
Resource Check Failures
# Resource check may find issues but continues build
log_warning "Resource check found issues, but continuing with build..."
Gradle Build Failures
# Check Android SDK and build tools
./android/gradlew --version
# Verify JAVA_HOME is set correctly
echo $JAVA_HOME
Integration with Capacitor
Capacitor Sync Process
# Full sync (all platforms)
npx cap sync
# Android-specific sync
npx cap sync android
Asset Generation
# Generate Android-specific assets
npx capacitor-assets generate --android
Android Studio Integration
# Open Android Studio with project
npx cap open android
Development Workflow
Typical Development Cycle
# 1. Make code changes
# 2. Build for development
npm run build:android:dev
# 3. Open Android Studio for debugging
npm run build:android:studio
# 4. Test on device/emulator
# 5. Iterate and repeat
Testing Workflow
# 1. Build for testing environment
npm run build:android:test
# 2. Build test APK
npm run build:android:test -- --apk
# 3. Install and test on device
adb install android/app/build/outputs/apk/debug/app-debug.apk
Production Workflow
# 1. Build for production environment
npm run build:android:prod
# 2. Build release AAB for Play Store
npm run build:android:prod -- --aab
# 3. Sign and upload to Play Console
Performance Optimization
Build Time Optimization
- Incremental Builds: Gradle caches build artifacts
- Parallel Execution: Multiple build steps run in parallel
- Resource Optimization: Assets are optimized for Android
Memory Management
- Gradle Daemon: Reuses JVM for faster builds
- Build Cache: Caches compiled resources
- Clean Builds: Full cleanup when needed
Troubleshooting
Common Build Issues
Gradle Build Failures
# Clean Gradle cache
cd android && ./gradlew clean && cd ..
# Check Java version
java -version
# Verify Android SDK
echo $ANDROID_HOME
Capacitor Sync Issues
# Force full sync
npx cap sync android --force
# Check Capacitor configuration
cat capacitor.config.json
Asset Generation Issues
# Regenerate assets
npx capacitor-assets generate --android --force
# Check asset source files
ls -la src/assets/
Debug Mode
# Enable verbose logging
./scripts/build-android.sh --verbose
# Show environment variables
./scripts/build-android.sh --env
Best Practices
Build Optimization
- Use Appropriate Environment: Always specify the correct environment
- Clean When Needed: Use
--clean
for troubleshooting - Incremental Builds: Avoid unnecessary full rebuilds
- Asset Management: Keep assets optimized for mobile
Development Workflow
- Development Builds: Use
--dev
for daily development - Testing Builds: Use
--test
for QA testing - Production Builds: Use
--prod
for release builds - Studio Integration: Use
--studio
for debugging
Error Prevention
- Resource Validation: Always run resource checks
- Environment Consistency: Use consistent environment variables
- Build Verification: Test builds on actual devices
- Version Control: Keep build scripts in version control
Migration from Legacy System
Backward Compatibility
The new system maintains full backward compatibility:
# Old command still works (now an alias)
npm run build:capacitor:android
# New commands provide more flexibility
npm run build:android:dev
npm run build:android:test
npm run build:android:prod
Note: All Android builds should use the build:android*
pattern. The build:capacitor:android*
scripts are provided as aliases for compatibility but will be deprecated in the future.
Migration Checklist
- Update CI/CD pipelines to use new commands
- Update documentation references
- Train team on new build options
- Test all build environments
- Verify artifact locations
Future Enhancements
Planned Features
- Build Profiles: Custom build configurations
- Automated Testing: Integration with test suites
- Build Analytics: Performance metrics and reporting
- Cloud Builds: Remote build capabilities
Integration Opportunities
- Fastlane Integration: Automated deployment
- CI/CD Enhancement: Pipeline optimization
- Monitoring: Build performance tracking
- Documentation: Auto-generated build reports
Status: Complete and ready for production use Last Updated: 2025-07-11 Version: 1.0 Maintainer: Matthew Raymer