Files
daily-notification-plugin/test-apps/daily-notification-test
Jose Olarte III 83ec604a4b fix(build): resolve Android build failures with Java 21 and Capacitor context
Fixed two build issues preventing Android plugin compilation:

1. Build script now builds from test app context instead of standalone
   - Capacitor Android is only available as a project dependency, not from Maven
   - Plugin must be built within a Capacitor app's Android project
   - Changed build_plugin_for_test_app() to build from test app's android/
     directory where Capacitor is available as :capacitor-android project

2. Added JVM arguments for Java 17+ KAPT compatibility
   - Java 21's module system blocks KAPT from accessing internal compiler classes
   - Added --add-opens flags to both org.gradle.jvmargs and kotlin.daemon.jvmargs
   - Kotlin compiler daemon runs separately and needs its own configuration
   - Applied to both plugin and test app gradle.properties files

These changes allow the plugin to build successfully with Java 21 and ensure
it's built in the correct context where Capacitor dependencies are available.
2025-12-31 12:53:02 +08:00
..
2025-10-15 10:46:50 +00:00
2025-10-15 10:46:50 +00:00
2025-10-15 10:46:50 +00:00
2025-10-15 10:46:50 +00:00
2025-10-15 10:46:50 +00:00
2025-12-08 22:42:23 -08:00
2025-10-15 10:46:50 +00:00
2025-10-15 10:46:50 +00:00

daily-notification-test

This template should help get you started developing with Vue 3 in Vite.

VS Code + Vue (Official) (and disable Vetur).

Type Support for .vue Imports in TS

TypeScript cannot handle type information for .vue imports by default, so we replace the tsc CLI with vue-tsc for type checking. In editors, we need Volar to make the TypeScript language service aware of .vue types.

Customize configuration

See Vite Configuration Reference.

Project Setup

npm install

Note: The postinstall script automatically fixes Capacitor configuration files after installation.

Building for Android and iOS

Use the unified build script for both platforms:

# Build and run both platforms on emulator/simulator
./scripts/build.sh --run

# Build both platforms (no run)
./scripts/build.sh

# Build Android only
./scripts/build.sh --android

# Build iOS only
./scripts/build.sh --ios

# Build and run Android on emulator
./scripts/build.sh --run-android

# Build and run iOS on simulator
./scripts/build.sh --run-ios

See: docs/BUILD_QUICK_REFERENCE.md for detailed build instructions.

Manual Build Steps

Capacitor Sync

Important: Use the wrapper script instead of npx cap sync directly to automatically fix plugin paths:

# Sync both platforms
npm run cap:sync

# Sync Android only
npm run cap:sync:android

# Sync iOS only
npm run cap:sync:ios

This will:

  1. Run npx cap sync (or platform-specific sync)
  2. Automatically fix capacitor.settings.gradle (corrects plugin path from android/ to android/plugin/)
  3. Ensure capacitor.plugins.json has the correct plugin registration

If you run npx cap sync directly, you can manually fix afterward:

node scripts/fix-capacitor-plugins.js

Compile and Hot-Reload for Development

npm run dev

Type-Check, Compile and Minify for Production

npm run build

Lint with ESLint

npm run lint

ADB Commands for Android Testing

Package Name: com.timesafari.dailynotification.test

Check Device Connection

adb devices

Install App

Install the debug APK to a connected device or emulator:

# From project root
cd android
./gradlew installDebug

# Or from test-apps/daily-notification-test directory
cd android && ./gradlew installDebug

List Installed Packages

Check if the app is installed:

# List all packages (filter for this app)
adb shell pm list packages | grep timesafari

# List only this app's package
adb shell pm list packages com.timesafari.dailynotification.test

Launch/Raise the App

Launch the app or bring it to foreground:

# Launch the main activity
adb shell am start -n com.timesafari.dailynotification.test/.MainActivity

# Launch with explicit intent
adb shell am start -a android.intent.action.MAIN -n com.timesafari.dailynotification.test/.MainActivity

Uninstall App

Remove the app from the device:

# Uninstall by package name
adb uninstall com.timesafari.dailynotification.test

# Force uninstall (if regular uninstall fails)
adb shell pm uninstall -k --user 0 com.timesafari.dailynotification.test

Additional Useful ADB Commands

View App Logs:

# Filter logs for this app
adb logcat | grep -E "timesafari|DailyNotification|DNP"

# Clear logs before testing
adb logcat -c

Check App Info:

# Get app version and info
adb shell dumpsys package com.timesafari.dailynotification.test | grep -A 5 "versionName\|versionCode"

Force Stop App:

# Force stop the app (useful for testing recovery scenarios)
adb shell am force-stop com.timesafari.dailynotification.test

Clear App Data:

# Clear app data (resets to fresh install state)
adb shell pm clear com.timesafari.dailynotification.test