Restructure Android project from nested module layout to standard
Capacitor plugin structure following community conventions.
Structure Changes:
- Move plugin code from android/plugin/ to android/src/main/java/
- Move test app from android/app/ to test-apps/android-test-app/app/
- Remove nested android/plugin module structure
- Remove nested android/app test app structure
Build Infrastructure:
- Add Gradle wrapper files (gradlew, gradlew.bat, gradle/wrapper/)
- Transform android/build.gradle from root project to library module
- Update android/settings.gradle for standalone plugin builds
- Add android/gradle.properties with AndroidX configuration
- Add android/consumer-rules.pro for ProGuard rules
Configuration Updates:
- Add prepare script to package.json for automatic builds on npm install
- Update package.json version to 1.0.1
- Update android/build.gradle to properly resolve Capacitor dependencies
- Update test-apps/android-test-app/settings.gradle with correct paths
- Remove android/variables.gradle (hardcode values in build.gradle)
Documentation:
- Update BUILDING.md with new structure and build process
- Update INTEGRATION_GUIDE.md to reflect standard structure
- Update README.md to remove path fix warnings
- Add test-apps/BUILD_PROCESS.md documenting test app build flows
Test App Configuration:
- Fix android-test-app to correctly reference plugin and Capacitor
- Remove capacitor-cordova-android-plugins dependency (not needed)
- Update capacitor.settings.gradle path verification in fix script
BREAKING CHANGE: Plugin now uses standard Capacitor Android structure.
Consuming apps must update their capacitor.settings.gradle to reference
android/ instead of android/plugin/. This is automatically handled by
Capacitor CLI for apps using standard plugin installation.
- Add PendingIntentManager class for proper PendingIntent handling
- Implement correct FLAG_UPDATE_CURRENT | FLAG_IMMUTABLE flags for Android 12+
- Add comprehensive exact alarm permission checking and handling
- Add fallback to windowed alarms when exact alarm permission denied
- Update DailyNotificationScheduler to use PendingIntentManager
- Add detailed alarm status reporting with Android version info
- Improve error handling for SecurityException on exact alarm scheduling
- Add comprehensive alarm status to checkStatus() method
P0 Priority Implementation:
- Fixes PendingIntent flags for modern Android compatibility
- Ensures exact alarm permissions are properly checked before scheduling
- Provides actionable error messages when exact alarm permission denied
- Adds fallback to windowed alarms for better reliability
- Improves alarm scheduling status reporting and debugging
This addresses the critical P0 issues with PendingIntent flags and
exact alarm permission handling for production reliability.