diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index e69de29..d37acde 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -0,0 +1,106 @@ +# Release Notes - NewBlackbox + +## Version: Latest Build (2026-01-31) + +--- + +### New Features + +#### VPN Network Mode Toggle +Added a new setting to choose between VPN and normal network mode for sandboxed apps. + +- **Location:** Settings → Others → Use VPN Network +- **Default:** OFF (normal network mode) +- When enabled, traffic is routed through BlackBox's VPN service +- Requires app restart to take effect + +**Files Changed:** +- `app/src/main/java/top/niunaijun/blackboxa/view/main/BlackBoxLoader.kt` +- `app/src/main/java/top/niunaijun/blackboxa/view/setting/SettingFragment.kt` +- `app/src/main/res/xml/setting.xml` +- `app/src/main/res/values/strings.xml` +- `Bcore/src/main/java/top/niunaijun/blackbox/app/configuration/ClientConfiguration.java` +- `Bcore/src/main/java/top/niunaijun/blackbox/BlackBoxCore.java` + +#### Device Information Logging +Added comprehensive device info header in logcat for easier debugging: +- Android version, SDK level, security patch +- Device manufacturer, brand, model, hardware +- Supported CPU/ABIs (32-bit and 64-bit) +- Memory info (heap usage) +- App version and package info +- Build fingerprint and timestamps + +--- + +### Bug Fixes + +#### VPN Permission Fix +**Problem:** VPN service failed to establish interface (`builder.establish()` returned null). + +**Root Cause:** Android requires `VpnService.prepare()` to be called from an Activity before VPN can be established. + +**Solution:** Added VPN permission request to `MainActivity.kt` on app launch. + +**Files Changed:** +- `app/src/main/java/top/niunaijun/blackboxa/view/main/MainActivity.kt` + +--- + +#### Android 10 Black Screen Fix +**Problem:** Apps would show a black screen and timeout on Android 10 (API 29). + +**Root Cause:** +- `BRAttributionSource.getRealClass()` returns `null` on Android < 31 +- `SystemProviderStub.invoke()` crashed calling `.getName()` on null class +- `ClassInvocationStub.injectHook()` crashed when `getWho()` returned null + +**Solution:** +- Added null checks in `SystemProviderStub.java` for API version checks +- Added null check in `ClassInvocationStub.java` to skip hooks when services don't exist + +**Files Changed:** +- `Bcore/src/main/java/top/niunaijun/blackbox/fake/service/context/providers/SystemProviderStub.java` +- `Bcore/src/main/java/top/niunaijun/blackbox/fake/hook/ClassInvocationStub.java` + +--- + +### Removed Features + +#### Xposed Framework Support +- Removed `BXposedManagerService` and related AIDL interfaces +- Removed "Install Xposed Module" UI and Settings entries +- Cleaned up Xposed-related flags and package checks + +--- + +### Stability Improvements + +#### Anti-Detection Native Hook Stability +- Removed `LOGD` calls from critical native hooks to prevent infinite recursion +- Fixed syntax errors in hook implementations +- Hooks now silently return `ENOENT` for blocked paths + +--- + +### Known Issues + +#### Oppo/ColorOS Thermal Stats Error +On Oppo/ColorOS devices, you may see errors like: +``` +OppoThermalStats: PackageManager$NameNotFoundException: top.niunaijun.blackboxa:p0 +``` +**This is harmless** - it's an Oppo system bug where their thermal management incorrectly uses process names (with `:p0` suffix) instead of package names. The app works normally. + +--- + +### Compatibility + +| Android Version | Status | +|-----------------|--------| +| Android 10 (Q) | ✅ Fixed | +| Android 11 (R) | ✅ Supported | +| Android 12 (S) | ✅ Supported | +| Android 13 (T) | ✅ Supported | +| Android 14 (U) | ✅ Supported | +| Android 15+ | ✅ Supported | diff --git a/build.gradle b/build.gradle index f42bd9e..a6d81b5 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ ext { // targetSdkVersion = 35 minSdk = 21 versionCode = 1 - versionName = "3.1.0-beta" + versionName = "3.1.1-beta" xVersion = '1.1.0' hiddenApiBypass = '4.3' } \ No newline at end of file