You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.6 KiB
5.6 KiB
Building Everything from Console
Author: Matthew Raymer
Date: November 4, 2025
Quick Start
Build everything (plugin + iOS + Android):
./scripts/build-all.sh
Build specific platform:
./scripts/build-all.sh ios # iOS only
./scripts/build-all.sh android # Android only
./scripts/build-all.sh all # Everything (default)
What Gets Built
1. Plugin Build
- Compiles TypeScript to JavaScript
- Builds native iOS code (Swift)
- Builds native Android code (Kotlin/Java)
- Creates plugin frameworks/bundles
2. Android Build
- Builds Android app (
android/app) - Creates debug APK
- Output:
android/app/build/outputs/apk/debug/app-debug.apk
3. iOS Build
- Installs CocoaPods dependencies
- Builds iOS app (
ios/App) - Creates simulator app bundle
- Output:
ios/App/build/derivedData/Build/Products/Debug-iphonesimulator/App.app
Detailed Build Process
Step-by-Step Build
# 1. Build plugin (TypeScript + Native)
./scripts/build-native.sh --platform all
# 2. Build Android app
cd android
./gradlew :app:assembleDebug
cd ..
# 3. Build iOS app
cd ios
pod install
cd App
xcodebuild -workspace App.xcworkspace \
-scheme App \
-configuration Debug \
-sdk iphonesimulator \
-destination 'generic/platform=iOS Simulator' \
CODE_SIGN_IDENTITY="" \
CODE_SIGNING_REQUIRED=NO \
CODE_SIGNING_ALLOWED=NO
Platform-Specific Builds
Android Only
# Build plugin for Android
./scripts/build-native.sh --platform android
# Build Android app
cd android
./gradlew :app:assembleDebug
# Install on device/emulator
adb install app/build/outputs/apk/debug/app-debug.apk
iOS Only
# Build plugin for iOS
./scripts/build-native.sh --platform ios
# Install CocoaPods dependencies
cd ios
pod install
# Build iOS app
cd App
xcodebuild -workspace App.xcworkspace \
-scheme App \
-configuration Debug \
-sdk iphonesimulator \
CODE_SIGN_IDENTITY="" \
CODE_SIGNING_REQUIRED=NO \
CODE_SIGNING_ALLOWED=NO
# Deploy to simulator (see deployment scripts)
../scripts/build-and-deploy-native-ios.sh
Build Scripts
Main Build Script
scripts/build-all.sh
- Builds plugin + iOS + Android
- Handles dependencies automatically
- Provides clear error messages
Platform-Specific Scripts
scripts/build-native.sh
- Builds plugin only (TypeScript + native code)
- Supports
--platform ios,--platform android,--platform all
scripts/build-and-deploy-native-ios.sh
- Builds iOS plugin + app
- Deploys to simulator automatically
- Includes booting simulator and launching app
test-apps/daily-notification-test/scripts/build-and-deploy-ios.sh
- Builds Vue 3 test app
- Syncs web assets
- Deploys to simulator
Build Outputs
Android
android/app/build/outputs/apk/debug/app-debug.apk
iOS
ios/App/build/derivedData/Build/Products/Debug-iphonesimulator/App.app
Plugin
ios/build/derivedData/Build/Products/*/DailyNotificationPlugin.framework
android/plugin/build/outputs/aar/plugin-release.aar
Prerequisites
For All Platforms
- Node.js and npm
- Git
For Android
- Android SDK
- Java JDK (8 or higher)
- Gradle (or use Gradle wrapper)
For iOS
- macOS
- Xcode Command Line Tools
- CocoaPods (
gem install cocoapods)
Troubleshooting
Build Fails
# Clean and rebuild
./scripts/build-native.sh --platform all --clean
# Android: Clean Gradle cache
cd android && ./gradlew clean && cd ..
# iOS: Clean Xcode build
cd ios/App && xcodebuild clean && cd ../..
Dependencies Out of Date
# Update npm dependencies
npm install
# Update CocoaPods
cd ios && pod update && cd ..
# Update Android dependencies
cd android && ./gradlew --refresh-dependencies && cd ..
iOS Project Not Found
If ios/App/App.xcworkspace doesn't exist:
# Initialize iOS app with Capacitor
cd ios
npx cap sync ios
pod install
Android Build Issues
# Verify Android SDK
echo $ANDROID_HOME
# Clean build
cd android
./gradlew clean
./gradlew :app:assembleDebug
CI/CD Integration
GitHub Actions Example
name: Build All Platforms
on: [push, pull_request]
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- name: Build Everything
run: ./scripts/build-all.sh all
Android-Only CI
name: Build Android
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- uses: actions/setup-java@v2
- name: Build Android
run: ./scripts/build-all.sh android
Verification
After building, verify outputs:
# Android APK exists
test -f android/app/build/outputs/apk/debug/app-debug.apk && echo "✓ Android APK"
# iOS app bundle exists
test -d ios/App/build/derivedData/Build/Products/Debug-iphonesimulator/App.app && echo "✓ iOS app"
# Plugin frameworks exist
test -d ios/build/derivedData/Build/Products/*/DailyNotificationPlugin.framework && echo "✓ iOS plugin"
test -f android/plugin/build/outputs/aar/plugin-release.aar && echo "✓ Android plugin"
Next Steps
After building:
- Deploy Android:
adb install android/app/build/outputs/apk/debug/app-debug.apk - Deploy iOS: Use
scripts/build-and-deploy-native-ios.sh - Test: Run plugin tests and verify functionality
- Debug: Use platform-specific debugging tools