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

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:

  1. Deploy Android: adb install android/app/build/outputs/apk/debug/app-debug.apk
  2. Deploy iOS: Use scripts/build-and-deploy-native-ios.sh
  3. Test: Run plugin tests and verify functionality
  4. Debug: Use platform-specific debugging tools

References