Releases: rafaelsetragni/AndroidAwnCore
Release notes for version 0.11.0
Target SDK 36 (Android 16)
This release migrates the library to target Android 16 (API 36), addressing all breaking changes from Android 15 and 16.
Breaking Changes
-
Foreground service type removed from library manifest. The
android:foregroundServiceTypeattribute is no longer declared in the library'sAndroidManifest.xml. Consumer apps must declare the foreground service types they use in their own manifest:<service android:name="me.carda.awesome_notifications.core.services.ForegroundService" android:foregroundServiceType="phoneCall|mediaPlayback" tools:node="merge" />
-
BIND_NOTIFICATION_LISTENER_SERVICEpermission removed. This permission was declared withmaxSdkVersion=22which had no effect since the library'sminSdkis 23. Consumer apps needingNotificationListenerServicemust declare this permission themselves.
New Features
-
6 new foreground service types added to
ForegroundServiceType:health(API 34)remoteMessaging(API 34)shortService(API 34) — ~3 minute timeoutspecialUse(API 34) — requiresFOREGROUND_SERVICE_SPECIAL_USEpermissionsystemExempted(API 34) — reserved for system appsmediaProcessing(API 35) — 6-hour timeout
-
Foreground service timeout handling.
ForegroundServicenow implementsonTimeout(int)(API 34, forshortService) andonTimeout(int, int)(API 35, fordataSync/mediaProcessing) to gracefully stop services that exceed their time limits, preventing ANRs andRemoteServiceException.
Improvements
- Build system updated: AGP 8.1.1 → 8.10.1, Gradle 8.10 → 8.11.1
- Dependencies updated: appcompat 1.7.1, material 1.13.0, media 1.7.1, room 2.8.4, lifecycle 2.10.0, sqlite 2.6.2, guava 33.5.0, annotation 1.9.1
- Fixed off-by-one bug in
ForegroundServiceType.getSafeEnum()wheremediaPlaybackandmediaProjectionwere incorrectly resolved asmanifest - Migrated annotation imports from
javax.annotationandorg.checkerframeworktoandroidx.annotationacross 17 files - Removed conflicting
compileSdk 34insidedefaultConfigthat shadowed the root-levelcompileSdkVersion = 36
Notes
- DND behavior change (Android 15+):
setInterruptionFilter()andsetNotificationPolicy()now create an implicitAutomaticZenRuleinstead of directly modifying global DND state. The library'sensureCriticalAlert()method continues to work, but the underlying system behavior has changed. - Java source/target compatibility remains at Java 8 for maximum consumer compatibility.
Release Notes for Version 0.10.0
Major Updates
-
Android 14 and AGP 8 Support: Upgraded all dependencies and the example app for full compatibility with Android 14 and Android Gradle Plugin 8. This ensures that our app leverages the latest Android features and development tools.
-
Minimum Android SDK to 23: Increased the minimum supported Android version to SDK 23 (Android 6.0 Marshmallow) to utilize advanced security and encryption features, enhancing the app's overall security posture.
Enhancements
-
Improved Error Messaging for SQLite: Enhanced error messaging for SQLite library usage to provide more accurate and helpful diagnostic information, aiding in quicker issue resolution and debugging.
-
MediaPlayer Album Art Resolution Fix: Addressed an issue where album art was displaying at reduced resolution on Android 14 devices. Album artwork now renders clearly and crisply, improving the visual quality of the media player.
Removals
- Gson Library Removal: Removed the Gson library due to compatibility issues with Android's latest releases and the R8 minification process. Transitioned to a more robust serialization framework that better supports obfuscation and modern Android versions.
Breaking Changes
- Required Manifest Permissions: Developers must now manually add
SCHEDULE_EXACT_ALARM,USE_FULL_SCREEN_INTENT, andWAKE_LOCKpermissions to the Android manifest at the app level if these features are needed, in compliance with new Android security policies. - End of Support for Older Devices: Devices running Android versions older than 6.0 will no longer be supported to leverage the security and system enhancements in newer Android versions.
Release Notes for Version 0.9.2
Enhanced Notification Builder Flexibility:
- We've improved our notification builder to eliminate the requirement for a summary in the Messaging layout. This means you won't encounter the "User must be valid and have a name" error anymore, making notification setup smoother and more flexible.
Updated Native Dependencies:
- All our native dependencies are now up-to-date with the latest versions. This update brings with it a host of bug fixes and performance enhancements, ensuring a better, more stable app experience.
Release Notes for Version 0.9.2
Enhanced Notification Builder Flexibility:
- We've improved our notification builder to eliminate the requirement for a summary in the Messaging layout. This means you won't encounter the "User must be valid and have a name" error anymore, making notification setup smoother and more flexible.
Updated Native Dependencies:
- All our native dependencies are now up-to-date with the latest versions. This update brings with it a host of bug fixes and performance enhancements, ensuring a better, more stable app experience.
Release Notes for Version 0.9.1
Release Notes for Version 0.9.1
-
Improved JSON Parsing Flexibility:
- We've upgraded our JSON parsing methods to allow more flexible type conversions. This enhancement means smoother data handling, especially when dealing with varied JSON structures and values.
-
Refined Progress Property in Notifications:
- The progress property within notifications has been refined for greater precision. You can now expect a more accurate and granular representation of progress in your notifications, improving clarity and interaction.
-
Null Support in setMediaPlayerLayout:
- The
setMediaPlayerLayoutmethod inNotificationBuilderhas been enhanced to support null values. This improvement addresses potential null pointer exceptions, ensuring a more robust and error-resistant notification building process.
- The
Release notes of version 0.9.0
-
Localized Notification Content: We have introduced localization key and argument fields in our notifications setup. This allows for the translation of notification content based on local localization files, ensuring users receive messages in their preferred language.
Enhanced Security with Action Buttons: -
authentication required: Added an 'authentication required' field to action buttons in notifications. This new feature restricts certain notification actions to authenticated users only, enhancing the security and integrity of user interactions.
Release of version 0.8.3
Fixes
- Event handle modified to support negative values during the lost events recovering process.
Release of version 0.8.2
- Added NotificationPlayState enum to turn it more usable for newbies and more versatile to send via push notifications, if needed.
- PlayState from map adapted to accept more number types, to be more robust against conversion mistakes from json data to numeric values.
- Builder methods adapted to use the new enumerator.
Release of version 0.8.1
- Added new playback capabilities to media player notifications, such control play speed and view the duration time in notifications for a more interactive media experience.
- A heartfelt thank you to @kuyermqi for developing these features.
0.8.0
- version bumped to 0.8.0 to emphasize the necessity of keeping dependencies up to date.