Skip to content

Doppel 2.2

Choose a tag to compare

@akano12 akano12 released this 29 Oct 20:49
· 146 commits to master since this release

Doppel 2.2: a boot time of its own for each app, the LSPosed scope from the app's screen, faster app starts, a new Activity overview, and Android 8.1 or later.

Privacy

  • A boot time of its own for each app. The time since boot is the same for all apps, so the boot time (the clock minus it) linked apps until the next restart. Each restricted app now adds its own offset of 10 to 120 minutes, new each boot, to SystemClock.elapsedRealtime, its nanos and the process start time, and /proc/stat and /proc/uptime (also through cat) match. Timers and durations are unchanged, and alarms on this clock and the age of location fixes are corrected. Part of Use.Tracking.
  • Boot id and memory size by every path: also through java.nio, other paths to the same file (like /proc/self/root/proc/meminfo) and cat of more files.
  • Battery: the faked level is in 10% steps and never below 15%.
  • Hidden apps: content providers answer like Android for an unknown app, and ordered broadcasts to hidden apps reach no receiver.
  • The storage volume UUID is made of its fake id, so both agree.

Interface

  • In LSPosed scope, a new toggle on the screen of an app: turn it on to add the app to Doppel's LSPosed scope (LSPosed asks you to confirm), off to remove it, without opening LSPosed. It shows when the framework has the modern (libxposed) API, not for System Framework and Doppel itself. Like a restriction, the change applies when the app restarts.
  • Activity: the overview follows the filter and the search, with restrictions or errors by day for the last week and today by hour; the list shows the entries the overview counts.
  • Log: an arrow opens a row in full when its text does not fit.
  • Apps: swipe the actions of a row back to close them.
  • No more flicker when switching between light and dark or opening Activity.
  • The "not running" screen links to the FAQ answer for it.

Speed

  • App starts read and compile each Lua script once for all hooks that share it, and the Apps list loads only what it shows of each hook.
  • Fewer calls and lookups in hooked apps: the Firebase opt-out once per instance, account types, keyboard and accessibility lists kept for a while, notification channels made once.

Fixes

  • registerTelephonyCallback: the callbacks of apps are registered again, only their cell info and cell location methods do not run.
  • Downloads only shows overlaps with built-in hooks for your Android version.
  • Data of other users is kept when Doppel is removed for the owner only.
  • Notifications open the main screen directly.
  • Saving values of a persistent app says to restart the device.

Downloads

  • Removed: BlockGuardOs.open (Fif). It blocked /apex, where Android 10 and later keep time zone data, ICU and Conscrypt, and it ran on every file an app opened. If you installed it, remove it in the Hooks tab.
  • New: Intika's PackageManager hooks for the flags of Android 13 and later. Fixed: SystemProperties.get.default/custom keeps defaults, the c2dm intent is kept.
  • No more download counts; they came from the old XPrivacyLua server and never changed.

Android 8.1 or later

  • Doppel now needs Android 8.1 (LSPosed needs it too). 42 definitions for Android 7.1 and earlier are gone; their restrictions move to the definitions that replaced them. On Android 6 or 7, stay on 2.1.
  • The legacy Xposed API stays for frameworks without the modern one.

Installing

  • Requires Android 8.1 or later, and LSPosed (or a compatible fork) or Xposed. See Installation.
  • Updating from 2.1: install over it, then reboot (not just a soft restart), so LSPosed loads the new version.
  • In LSPosed, enable Doppel with System Framework and the apps to restrict in its scope, or use the new In LSPosed scope toggle.
  • Coming from XPrivacyLua: uninstall XPrivacyLua first. Doppel is a separate app (sk.akano12.doppel) that uses the same service, so the two cannot be active side by side.

Verifying the download

Signing certificate SHA-256:

A0:F2:1E:B3:95:12:FA:90:4F:04:6C:F1:66:E7:86:07:F5:95:4F:00:F1:43:00:2D:35:89:EA:71:FD:EA:71:F4

APK SHA-256:

a70732a8b8d0c938f388068d57553e2075a0fc935507456fe425a9a76b765789

Check the certificate with apksigner verify --print-certs Doppel-v2.2-202-release.apk.