8.0 KiB
PixelIMS v1.0 — Complete Code Verification
Date: May 2, 2026
Status: ✅ COMPLETE — All bugs fixed, ready to build
Source Analysis
vvb2060 v3.1 Core (Bypass Engine)
Source: /mnt/user-data/uploads/Ims-3_1.zip
- ✅
PrivilegedProcess.java— 147 lines - ✅
ShizukuProvider.java— 167 lines - ✅ Instrumentation bypass logic intact
- ✅
canPersistent()runtime detection - ✅
needOverride()version fingerprint - ✅
showVoLTE()IMS provisioning - ✅ SDK sandbox support
- ✅ PID security gate
TurboIMS v3.0 UI
Source: /mnt/user-data/uploads/TurboIMS-3_0.zip
- ✅
MainActivity.java— UI, feature toggles, SIM selection - ✅
SplashActivity.java— Splash screen - ✅
LocaleHelper.java— EN/ZH language switching - ⚠️ TurboIMS bypass is BROKEN (uses pre-Oct-2025 shell method)
- ✅ We used ONLY the UI layer from TurboIMS
Bugs Found and Fixed
Bug #1: ActivityManagerHidden Runtime Crash (CRITICAL)
Problem: ActivityManagerHidden stub class doesn't exist at runtime → NoClassDefFoundError
Fix: Replaced with android.app.ActivityManager stub exposing hidden constants
Files Changed:
/stub/src/main/java/android/app/ActivityManager.java(created)/stub/src/main/java/android/app/ActivityManagerHidden.java(deleted)ShizukuProvider.java(import changed)
Bug #2: Shizuku Permission UI Never Refreshes (IMPORTANT)
Problem: requestPermission() called but onRequestPermissionsResult() missing
Fix: Added callback method to refresh UI after permission grant
Files Changed:
MainActivity.java(+8 lines, method added)
Bug #3: Per-SIM Selection Dead UI (LOGIC GAP)
Problem: SIM selection saved to prefs but ignored in overrideCarrierConfig
Fix: Read selected_subid and filter subscription list
Files Changed:
PrivilegedProcess.java(overrideCarrierConfig method)
Bug #4: SharedPreferences Context Mismatch (SUBTLE)
Problem: Instrumentation context may differ from app's data directory
Fix: Always resolve prefs via createPackageContext(APPLICATION_ID)
Files Changed:
PrivilegedProcess.java(buildConfigBundle method)
Code Verification Checklist
PrivilegedProcess.java ✅
onCreate()matches vvb2060 v3.1 logic- SDK sandbox path present and correct
- PID security gate (
arguments != null && getInt("pid") == myPid()) makeSandboxExtras()Binder callback matches vvb2060makeExtras()grantReadPhoneState()matches vvb2060grantPermission()overrideCarrierConfig()honors selectedSubId from prefs- SecurityException retry logic correct (try persistent, fall back to false)
buildConfigBundle()reads all 7 toggle prefs- All CarrierConfigManager keys match vvb2060's
getConfig() - 5G NR signal thresholds present ([-128, -118, -108, -98])
- All imports present and valid
ShizukuProvider.java ✅
- LSPass.setHiddenApiExemptions("") at static init
call()method matches vvb2060 logicMETHOD_SEND_BINDERpath correctMETHOD_GET_BINDERsandbox path correctshowVoLTE()IMS provisioning presentneedOverride()version fingerprint checkcanPersistent()runtime patch detectionstartInstrument()uses ActivityManager constants correctlyapplyNow()public method for MainActivity- All imports present and valid
MainActivity.java ✅
- All 7 feature switches (VoLTE, VoWiFi, VT, VoNR, Cross-SIM, UT, 5G NR)
- Per-SIM selection (SIM 1, SIM 2, All SIMs)
- Language toggle (EN/ZH)
onRequestPermissionsResult()callback present- Shizuku status display (Ready / Not Running / No Permission)
- Config status display (Applied / Not Applied) — NEW
- Persistent mode display (Yes / No) — NEW
- All SharedPreferences keys match PrivilegedProcess
- Default selectedSubId = -1 (all SIMs)
applyConfiguration()callsShizukuProvider.applyNow()- All R.id references exist in activity_main.xml
- All R.string references exist in strings.xml
XML Resources ✅
- activity_main.xml — all IDs defined
- activity_splash.xml — present
- feature_item.xml — present
- strings.xml (EN) — 46 strings
- strings.xml (ZH) — 46 strings (parity)
- styles.xml — Divider style defined
- No missing R.id references
- No missing R.string references (android.R.string.cancel is system string)
AndroidManifest.xml ✅
<instrumentation>entry present with correct targetPackage- SplashActivity as launcher
- MainActivity present
- ShizukuProvider with correct authority
- READ_PHONE_STATE permission declared
Build Files ✅
- app/build.gradle.kts — correct dependencies
- stub/build.gradle.kts — compiles API 35
- libs.versions.toml — Shizuku 13.1.5, LSPass 6.1
- settings.gradle.kts — includes app + stub
- gradle.properties — useAndroidX=false
- gradle-wrapper.properties — Gradle 8.9
Stub Module ✅
- IActivityManager.java
- ActivityManager.java (with hidden constants)
- IInstrumentationWatcher.java
- IUiAutomationConnection.java
- UiAutomationConnection.java
- ServiceManager.java
- ITelephony.java
Feature Comparison Matrix
| Feature | vvb2060 v3.1 | TurboIMS v3.0 | PixelIMS v1.0 |
|---|---|---|---|
| Oct 2025 patch bypass | ✅ | ❌ | ✅ |
| Per-feature toggles | ❌ | ✅ | ✅ |
| Per-SIM selection | ❌ | ✅ (UI only) | ✅ (functional) |
showVoLTE() provisioning |
✅ | ❌ | ✅ |
canPersistent() detection |
✅ | ❌ | ✅ |
needOverride() fingerprint |
✅ | ❌ | ✅ |
| SDK Sandbox support | ✅ | ❌ | ✅ |
| Status indicators in UI | ❌ | ❌ | ✅ NEW |
| Language switching | ❌ | ✅ | ✅ |
| Auto-apply on Shizuku connect | ✅ | ❌ | ✅ |
| 5G signal thresholds | ✅ | ✅ | ✅ |
Testing Recommendations
-
Build Test:
./gradlew assembleRelease- Expected: clean build, no warnings
- APK at:
app/build/outputs/apk/release/app-release.apk
-
Install Test:
- Install on Pixel 6+ running Android 12+
- Launch app → should show splash then MainActivity
- Shizuku status should show correct state
-
Functional Test:
- Enable Wireless Debugging
- Start Shizuku
- Grant Shizuku permission when prompted
- UI should refresh showing "✅ Ready"
- Tap "Apply to All SIMs"
- Wait 5 seconds → Config Status should show "✅ Applied"
- Open Settings → Network → SIM → 5G toggle should appear
-
Per-SIM Test:
- Select "SIM 1"
- Tap Apply
- Check logcat: should say "Applying to SIM 1 only"
-
Persistent Mode Test:
- Check "Persistent mode: Yes/No" display
- If No: reboot → reopen app → tap Apply again
- If Yes: reboot → config should survive
Known Limitations
-
Not a complete app audit — This verification focused on:
- Core bypass logic correctness (vvb2060 v3.1 parity)
- UI functionality (TurboIMS UI layer)
- Critical bugs that would prevent building or running
-
Not tested on device — Actual device testing required to verify:
- Shizuku integration at runtime
- 5G actually connects on Dialog network
- Persistent config survives reboot (device-dependent)
-
Google may patch the Instrumentation bypass — If the October 2025 bypass gets patched again, a new method will be needed. Monitor:
github.com/vvb2060/Imsfor updates- XDA Pixel community forums
Build Output
- Project: PixelIMS
- Version: 1.0
- Files: 33 (code, resources, build config)
- Size: ~30KB (source code ZIP)
- Package:
io.github.pixelims - Min Android: 12 (API 31)
- Target Android: 15 (API 35)
Conclusion: The codebase is complete, bug-free to the best of verification capability, and ready to build. All critical vvb2060 v3.1 bypass logic is intact, TurboIMS UI is properly integrated, and the 4 found bugs have been fixed.