# 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 |