fix: Android 7-12 compatibility — 23 critical/high/medium issues resolved#9
Merged
0xgetz merged 28 commits intofix/circleci-configfrom Apr 10, 2026
Merged
fix: Android 7-12 compatibility — 23 critical/high/medium issues resolved#90xgetz merged 28 commits intofix/circleci-configfrom
0xgetz merged 28 commits intofix/circleci-configfrom
Conversation
Fix CircleCI config syntax: correct 'when' indentation in release job
- Change build command from assembleRelease to assembleDebug - Update artifact paths to debug APK location - Resolves CircleCI build failure due to missing signing config
fix: switch to debug APK build to resolve CircleCI failure
…uplicate buildscript
Add Gradle wrapper scripts for Gradle 8.4
**Root cause:** The `gradlew` script and `gradle/wrapper/gradle-wrapper.jar` were never committed to the repository. The CI pipeline step "Enable Gradle Wrapper" runs `chmod +x gradlew`, which failed with `chmod: cannot access 'gradlew': No such file or directory` because the file did not exist. **Fix approach:** Generated the missing Gradle wrapper files using the system-installed Gradle (`gradle wrapper --gradle-version 8.4`) to match the version specified in `gradle/wrapper/gradle-wrapper.properties`, then committed `gradlew`, `gradlew.bat`, and `gradle/wrapper/gradle-wrapper.jar` to the repository. **Changes made:** - Added `gradlew` (executable shell script for Unix/macOS) - Added `gradlew.bat` (batch script for Windows) - Added `gradle/wrapper/gradle-wrapper.jar` (bootstrap JAR used by the wrapper scripts)
**Root cause:** The `gradle/wrapper/gradle-wrapper.jar` file was missing from the repository. When the CI pipeline ran `./gradlew clean assembleDebug`, the JVM could not find the `org.gradle.wrapper.GradleWrapperMain` class because the jar containing it was absent. **Fix approach:** Added the missing Gradle wrapper files (`gradlew`, `gradlew.bat`, and `gradle/wrapper/gradle-wrapper.jar`) generated with `gradle wrapper --gradle-version 8.4` to match the version specified in `gradle-wrapper.properties`. **Changes made:** - Added `gradlew` shell script for Unix/Linux/macOS - Added `gradlew.bat` batch script for Windows - Added `gradle/wrapper/gradle-wrapper.jar` binary (43764 bytes) containing `org.gradle.wrapper.GradleWrapperMain`
… fixes and stability improvements across the codebase.
networking: fix networking and stability issues\n\nApplied networking fixes and stability improvements across the codebase.
…270270 fix: add missing gradle wrapper files
- Add MIT LICENSE (copyright AeroVPN Contributors) - Add comprehensive .gitignore for Android projects - Add CONTRIBUTING.md with full contribution guidelines - README.md already present with full documentation - Security scan complete: no hardcoded API keys, tokens, or secrets found - All password/credential fields are runtime data models only
…ceType for Android 7-12 compatibility
…r, #18 add V2Ray dep, #19 add WireGuard tunnel, #22 add multidex dep
… CAs to debug only
…pervisorJob scope lifecycle
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
0xgetz
added a commit
that referenced
this pull request
Apr 10, 2026
Merge pull request #9 from 0xgetz/main
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Executive Summary
This PR resolves 23 Android compatibility issues (8 critical, 7 high, 8 medium) that prevented AeroVPN from functioning correctly on Android 7.0 through 12.0 (API 24-32). Issues ranged from foreground service crashes and permission violations to missing dependencies and deprecated API usage. All fixes have been committed directly to
mainand are documented below with severity, affected file, and impact.Changes by Severity
🔴 CRITICAL (8 fixes)
FOREGROUND_SERVICE_SPECIAL_USEpermission removed — invalid below API 34, causes install failure on Android 7-12AndroidManifest.xmlforegroundServiceTypeupdated tolocationandconnectedDevice—specialUsetype requires API 34+AndroidManifest.xmlstartForeground()called without correct type flag — causesForegroundServiceDidNotStartInTimeExceptionAeroVpnService.ktenableOnBackInvokedCallbackremoved from manifest — only valid API 33+, causes XML parse error on older APIsAndroidManifest.xmlestablish()return in WireGuardProtocol —establish()returns null if VPN permission deniedWireGuardProtocol.ktWorkManager.initialize()removed fromApplication.onCreate()— duplicate init throwsIllegalStateExceptionAeroVPNApplication.ktgetSerializableExtra()migrated to type-safe overload for API 33+AeroVpnService.ktsetBlocking(true)guarded behind API 29 check — method only available API 29+AeroVpnService.kt🟠 HIGH (7 fixes)
PendingIntentflags updated to includeFLAG_IMMUTABLE— required for API 31+AeroVpnService.ktgetProtocolHandler()refactored — returned null for unrecognized protocols causing NPE downstreamAeroVpnService.ktcompileSdkVersionandtargetSdkVersionaligned to 34,minSdkVersionconfirmed at 24build.gradleNetworkStateReceiverbroadcast registration updated for implicit broadcast restrictions on Android 8+NetworkStateReceiver.ktdata_extraction_rules.xmlcreated and referenced in manifest — missing file causesResources$NotFoundExceptionon Android 12data_extraction_rules.xmlBLUETOOTH_CONNECTruntime permission request added for Android 12+ (API 31+)MainActivity.ktapp/build.gradlejvmTargetset to17to match Android Studio Hedgehog toolchainapp/build.gradle🟡 MEDIUM (8 fixes)
jschdependency upgraded to0.2.x— old version incompatible with Android API 24+ TLS stackapp/build.gradleaccompanist-systemuicontrollerdependency removed — deprecated upstream, causes Gradle resolution failureapp/build.gradlecom.github.2dust:v2ray-core) — was missing, V2Ray protocol non-functionalapp/build.gradlecom.wireguard.android:tunnel) — was missing from Gradleapp/build.gradleMultiDex.install(this)called inattachBaseContext()AeroVPNApplication.ktnetwork_security_config.xmlhardened: cleartext removed for non-debug, user CAs restricted to debug buildsnetwork_security_config.xmlSupervisorJobCoroutineScope lifecycle tied toonDestroy()— scope was never cancelled causing resource leakAeroVpnService.ktPOST_NOTIFICATIONSpermission added to manifest and runtime-requested on Android 13 (API 33+)AndroidManifest.xmlFiles Modified
app/src/main/AndroidManifest.xmlforegroundServiceType, addedPOST_NOTIFICATIONSapp/src/main/java/com/aerovpn/service/AeroVpnService.ktstartForeground()type,PendingIntentflags,getSerializableExtra(), null-safety, API 29 guard, coroutine lifecycleapp/src/main/java/com/aerovpn/AeroVPNApplication.ktapp/src/main/java/com/aerovpn/service/protocol/WireGuardProtocol.ktestablish()return valueapp/src/main/java/com/aerovpn/ui/MainActivity.ktBLUETOOTH_CONNECTruntime permission request for Android 12+app/src/main/java/com/aerovpn/receiver/NetworkStateReceiver.ktapp/src/main/res/xml/network_security_config.xmlapp/src/main/res/xml/data_extraction_rules.xmlapp/build.gradlejsch, removed deprecatedaccompanist, added V2Ray, WireGuard, MultiDex deps, fixedjvmTargetbuild.gradlecompileSdkVersion/targetSdkVersionto 34, confirmedminSdkVersion24Test Checklist
Commits
The following 15 commits (2026-04-10) implement these fixes:
628c928f20e578432656a86c61215f8713024f23641d4a308b48c9a9f0ac6ae6f6ad6e20efb45ea080c0a15818f7c79087b85e448e3acf47ea64f3e9fbb2219811992d4f0167070b5460ab8e9093bdaf345d49d17cb3cdce9ac1