DarQ v2.2.2 - Android 14 Modernization & Security Update
Summary:
This major release modernizes the DarQ application for Android 14 (API 34). It resolves several critical crashes on modern devices (such as the Samsung S24 Ultra), removes Google Play Protect installation blockers, and implements strict security hardening for broadcast receivers.
🛡️ Security Enhancements
- Hardened Broadcast Receivers: Updated
UpdateDownloadBottomSheetViewModel.ktto explicitly require theContext.RECEIVER_EXPORTEDflag on Android 13+ (API 33+). This enforces Android 14's strict intent resolution rules forDownloadManagerbroadcasts, preventing malicious spoofing andSecurityExceptioncrashes.
⚙️ Framework Compatibility & Stability (Android 14/15)
- Binder Crashes: Fixed
AbstractMethodErrorby updatingIProcessObserver.aidlto include the neweronProcessStartedandonProcessStateChangedmethods. Implemented missing methods inDarqService.ktwith strict Java signature matching. - Service Connection: Fixed
IllegalStateException: Already resumedinDarqServiceConnectionProvider. Refactored the service binder to usesuspendCancellableCoroutine, added atomicisActivechecks, and implementedinvokeOnCancellationto safely unbind on timeouts.
🚀 SDK Modernization (API 34)
- Target SDK Bump: Updated
compileSdkVersionandtargetSdkVersionto34in theappandsystemstubsmodules. - Foreground Services: Added
FOREGROUND_SERVICE_SPECIAL_USEpermission and definedandroid:foregroundServiceType="specialUse"for all background services to comply with Android 14 requirements. - PendingIntent Mutability: Fixed a fatal crash on Android 12+ by adding
PendingIntent.FLAG_IMMUTABLEto all PendingIntents inBootForegroundService.kt. - Notifications: Added
POST_NOTIFICATIONSto the manifest and implemented a runtime permission request on app launch for Android 13+.
🛠️ Build System & Dependency Fixes
- Xposed API: Added the official Xposed repository (
https://api.xposed.info/) tobuild.gradleto resolve missing dependencies and allow successful builds. - AGP Warnings: Added explicit
namespacedeclarations inbuild.gradlefiles and safely suppressed the AGP 7.4.2 unsupportedcompileSdkwarning ingradle.propertiesto maintain Java 11 build compatibility.
🔄 Update Checker Logic
- Version Checking: Replaced strict inequality version checking with semantic version comparison (
isNewerVersion). The app will no longer block users with an "Update Available" screen when running a local version that is newer than the GitHub release. - Version Bump: Updated version to 2.2.2 (versionCode 23).