Morphe Patches

July 9, 2026 · View on GitHub

What this is

Unofficial Morphe/ReVanced-lineage patch bundle for ~30 Android apps, targeting Poco F7 (HyperOS 3 / Android 15) but device-agnostic across Android 12+. GPL-3.0-or-later.

This repo produces a single .mpp (Morphe patch bundle) you feed to Morphe Manager. Patches strip ads, unlock Pixel-exclusive apps on non-Pixel hardware, override themes, and add small quality-of-life features on top of Piko/Morphe/Rushi/Hoodle patch stacks.

Nothing here is affiliated with ReVanced, Morphe, or any of the upstream authors we subtree from. This is a personal fork bundle — use at your own risk.


Installation (one-time setup)

  1. Install Obtainiumreleases (or via F-Droid, or direct APK). Obtainium is the source-agnostic APK updater; we use it to keep Morphe Manager + the patched APKs fresh.
  2. Install Morphe Managerreleases. This is the runner that consumes .mpp bundles and produces installable patched APKs.
  3. Grant Morphe Manager the following permissions when it prompts:
    • Storage access (read APKs, write output)
    • Install unknown apps (needed to sign + install patched APKs)
    • Optional: notification access (progress toasts during long patches)
  4. (Optional) Magisk + MicroG spoof — required only if you plan to patch apps that hard-check Play Integrity (some banking / streaming apps). For the current app coverage below, this is NOT required. Only Truecaller checks integrity and our patch removes that check.

The simplest flow: subscribe Obtainium to the pre-built releases repo and let it push updates.

Obtainium subscribe URL:

https://github.com/chirag127/morphe-releases

Note: the releases repo is private per personal policy — request access via a GitHub issue on this repo (include your GitHub username) and you'll be added as a collaborator. The releases repo mirrors this repo's .mpp + pre-patched APKs per app per version.

Public alternative: clone this repo, build the .mpp locally (see "Building from source" below), then use Morphe Manager to apply it against your own APKs. This is the always-available path and does not require repo access.

Once subscribed, Obtainium will pull the latest patched APK on its normal schedule (default: daily). It will prompt on install because non-Play-Store APKs need user consent per install.


Manual usage (advanced)

Prefer this route if you want per-patch control, or you want to avoid the releases repo entirely.

  1. Download the app's OFFICIAL APK from a mirror site: apkpure.com or apkmirror.com. Get the exact version tag listed under the patch's @CompatiblePackage block. Do NOT download modded / cracked / "premium unlocked" APKs floating around Telegram or shady sites — those have their own tampering baked in and our fingerprints will not match. We only patch official APKs.
  2. Download the latest .mpp from this repo's Releases tab. Look for the patches-<version>.mpp asset attached to the newest tag.
  3. Open Morphe Manager on your device → tap the + in the top-right → Import Patches → select the .mpp you just downloaded.
  4. Import the APKSelect patches to enable — see the per-app section below for which patches to toggle and their side-effects. Some patches (e.g. Truecaller's "remove device check") are required for the others in that app to work; others (e.g. Truecaller's "unlock premium") are opt-in.
  5. Apply patchesSign + install. Morphe Manager signs with its own debug key, so you cannot install over the Play Store version — uninstall the Play Store version first (backup your data if the app supports export).

App coverage table

Legend for the Status column:

  • WORKING — patch applies cleanly against the currently-listed version and produces a running app.
  • STUB — patch scaffold + name are in the repo but fingerprints are pending (patch will no-op or fail-soft; safe to leave enabled while we wait for upstream).
  • BROKEN — patch applies but the resulting app crashes on launch or a critical screen. Do NOT enable.

Pixel-only apps (Poco F7 unlock)

AppPackagePatches availableNotesStatus
Pixel Recordercom.google.android.apps.recorderBypass device checkTranscription server-side — works on Poco once installedBROKEN — crash on launch, see #XX
Pixel Weathercom.google.android.apps.weatherBypass device checkUses Google's weather backendBROKEN — crash on launch, see #XX
Pixel Screenshotscom.google.android.apps.pixel.screenshotsBypass device checkOn-device Gemini OCRBROKEN — crash on launch, see #XX
Pixel Studiocom.google.android.apps.pixel.creativeassistantBypass device checkOn-device image genBROKEN — crash on launch, see #XX

These four all hit the same root cause: the Android 15 QPR2 build shipped a hardware attestation check that the current bypass shim doesn't defeat. Fingerprints for the new check need re-authoring against the latest Pixel APKs.

Truecaller (flagship)

AppPackagePatches availableNotesStatus
Truecallercom.truecaller21 atomic patchesDevice-detection removal, ad removal, analytics kill, premium unlock, gold unlock, family-plan unlock, spam-badge always-on, caller-ID override, dialer skin unlock, backup unlock, WhoSearchedForMe unlock, contact-request unlock, ghost-call unlock, incognito unlockWORKING — primary flagship patch

The Truecaller stack is the most-tested surface in this bundle. All 21 patches are atomic — enable individually or all-at-once. Recommended set for daily use: remove-device-check + remove-ads + unlock-premium + spam-badge-always-on. The unlock-gold and unlock-family patches are on-by-default in the release build.

News & code

AppPackagePatches availableNotesStatus
Google Newscom.google.android.apps.magazinesAd-stripRemoves home-feed sponsored cards + article-body inline adsSTUB — fingerprints pending upstream
GitHub Androidcom.github.androidAMOLED palette override, comment-surface themePalette works; comment-surface fingerprint still drifting per versionWORKING (palette) / STUB (comment surface)

YouTube on-top (Piko/Morphe base)

These patches layer ON TOP of the existing YouTube patches from Piko or the Morphe base bundle. Do not enable them standalone — enable Piko's YouTube patches first, then these.

AppPackagePatches availableNotesStatus
YouTubecom.google.android.youtubeLike/dislike → auto-nextLong-press either to skip to next videoSTUB — requesting upstream at Piko / Morphe / Rushi / Hoodle
YouTubecom.google.android.youtubePlaylist downloadBulk-download a whole playlist via YT's own offline APISTUB — requesting upstream
YouTubecom.google.android.youtubePlaylist total timeSum of video durations in playlist headerSTUB — requesting upstream

Social

AppPackagePatches availableNotesStatus
Twitter / Xcom.twitter.androidPiko-derived (ad-strip, chronological feed, undo tweet, hide promoted, custom download folder)Layered on top of PikoSTUB
Instagramcom.instagram.androidBrosssh-derived (distraction-free feed, hide stories, hide reels, download button, ghost mode)Layered on top of BrossshSTUB
TikTokcom.zhiliaoapp.musicallyicysymmetra-derived (region unlock, ad-strip, download unwatermarked, timer removal)Layered on top of icysymmetraSTUB
Redditcom.reddit.frontpageAdobo-derived (ad-strip, old-Reddit UX polish, chat-tab hide, NSFW unlock)Layered on top of AdoboSTUB
Snapchatcom.snapchat.androidGhost-mode, save-to-camera-roll, streak-preserveSTUB
WhatsAppcom.whatsappAnti-delete, read-receipt hide, view-once bypassSTUB
LinkedIncom.linkedin.androidAd-strip, promoted-post hide, disable read receiptsSTUB
Threadscom.instagram.barcelonaAd-strip, chronological feedSTUB
Facebookcom.facebook.katanaAd-strip, sponsored hide, story-view hideSTUB

Media

AppPackagePatches availableNotesStatus
Spotifycom.spotify.musicAd-strip, unlimited skips, seek unlock, download unlockSTUB
Prime Videocom.amazon.avod.thirdpartyclientAd-strip, X-Ray always on, subtitle overrideSTUB
MIUI Musiccom.miui.playerAd-strip, disable analyticsSTUB
MIUI Weathercom.miui.weather2Ad-strip, remove sponsored cardsSTUB

Productivity

AppPackagePatches availableNotesStatus
Notionnotion.idUnlock unlimited blocks, offline modeSTUB
Todoistcom.todoistPremium unlock (labels, filters, reminders)STUB
Any.docom.anydoPremium unlock (recurring tasks, subtasks)STUB
Moon+ Reader Procom.flyersoft.moonreaderpUnlock Pro features on free versionSTUB

Shopping & travel

AppPackagePatches availableNotesStatus
Amazon Shoppingin.amazon.mShop.android.shoppingAd-strip, sponsored-strip, hide promoted-searchSTUB
Google Mapscom.google.android.apps.mapsAd-strip on search, hide sponsored pins, hide promoted businessesSTUB

Language learning

AppPackagePatches availableNotesStatus
Duolingocom.duolingoBufferk-derived Super Max unlock, streak spoof, ad-strip, hearts unlockLayered on top of BufferkSTUB

Known broken

The Pixel-app crashes are the only currently-tracked hard breakages. Filing three GitHub issues to track (issue numbers to be added once filed):

  • Pixel Recorder crash on launch — #XX
  • Pixel Weather crash on launch — #XX
  • Pixel Screenshots + Studio crash on launch (shared root cause) — #XX

Root cause hypothesis: Android 15 QPR2 hardware attestation. The bypass patch removes the string-level device-model check but the new check reads from KeyStore attestation records that need a different bypass strategy. Contributions welcome.


Fork strategy

This bundle subtrees 10 active upstream bundles under upstream/ and layers our own patches on top under on-top/. A daily cron auto-pulls each upstream/<name> subtree from its source repository's main branch.

Conflict resolution. When two upstream bundles patch the same fingerprint (e.g. Rushi's YouTube ad-strip vs Hoodle's YouTube ad-strip, both live), an explicit precedence table in patches/src/main/kotlin/app/chirag127/morphe/patches/PatchPrecedence.kt picks the winner per package. On-top patches ALWAYS win over upstream when the same fingerprint is patched twice.

Subtreed bundles (activity-ranked by patch count as of last audit):

  1. Rushirushiranpise/morphe-patches — 89 apps, primary content source
  2. Hoodlehoo-dles/morphe-patches — 52 apps
  3. Hoomanarandomhooman/hoomans-morphe-patches — 41 apps
  4. kondratjevkondratjev/morphe-patches — 14 apps (health / fitness cluster)
  5. androidtv-ajstrickajstrick81/morphe-androidtv-patches — 12 apps (Android TV cluster)
  6. MorpheAppMorpheApp/morphe-patches — 7 apps (base framework + reference impls)
  7. Bufferkbufferk/morphe-patches — 7 apps (Duolingo lineage)
  8. Adobojkennethcarino/adobo — 7 apps (Reddit UX polish specialist)
  9. Brossshbrosssh/morphe-patches — 6 apps (Instagram distraction-free specialist)
  10. Pikocrimera/piko — 4 apps (Twitter/X specialist)

Why subtree instead of submodule. Subtrees flatten into our history so a single .mpp build works end-to-end without recursive checkouts. Submodules would force every consumer of the .mpp to also --recurse-submodules when cloning the repo, which is a foot-gun.

Trust boundary. We do not verify signatures on upstream commits. If any upstream repo is compromised, we absorb it on next auto-sync. Consider this before running the built .mpp against sensitive apps (banking, password managers). None of the currently-patched apps handle high-sensitivity data.


Building from source

Prerequisites

  • JDK 21 — the Morphe Gradle plugin requires exactly 21 (not 17, not 22). On Windows, Temurin 21 works. Verify with java -version → should read openjdk version "21.x.x".
  • Gradle 8+ — the wrapper (./gradlew) ships with the correct version; you don't need a system Gradle.
  • GITHUB_TOKEN env var with read:packages scope — the Morphe Gradle plugin lives on GitHub Packages and requires auth even for public reads. Create at github.com/settings/tokens → generate classic token → check read:packages → set GITHUB_TOKEN=ghp_... in your shell environment.
  • pnpm — used for the release-tooling scripts (not the Gradle build itself). Install with npm i -g pnpm.

Build steps

git clone https://github.com/chirag127/morphe-patches.git
cd morphe-patches
pnpm install
./gradlew :patches:buildAndroid

Output lands at patches/build/libs/patches-<version>.mpp. Copy this to your device (ADB, Syncthing, Nearby Share, whatever) and import via Morphe Manager → Import Patches.

Rebuilding after changing a patch. ./gradlew :patches:buildAndroid again — Gradle handles incremental compilation. First build takes ~2 minutes on cold cache; subsequent builds are ~15 seconds.

Running tests./gradlew test. Test coverage is spotty; the patch itself is tested in production by applying against real APKs.


Contributing

New patch shape. Write an app-specific fingerprint + patch in patches/src/main/kotlin/app/chirag127/morphe/patches/targets/<app>/<Patch>.kt.

Template:

@Suppress("unused")
val myFeaturePatch = bytecodePatch(
    name = "My feature",
    description = "One-sentence description shown in Morphe Manager UI.",
) {
    compatibleWith("com.example.app"("1.2.3"))

    val fingerprint by fingerprint {
        // fingerprint definition
    }

    execute {
        try {
            val method = fingerprint.method
            // patch bytecode
        } catch (e: PatchException) {
            // fail-soft — log and continue, do not hard-fail the whole bundle
            println("[my-feature] skip: ${e.message}")
        }
    }
}

Fail-soft rule. Every patch wraps its bytecode-mutation section in try/catch(PatchException) so a fingerprint drift on one app doesn't hard-fail the entire .mpp build. This is the pattern the Truecaller patches use — see patches/src/main/kotlin/app/chirag127/morphe/patches/targets/truecaller/ for the reference shape.

Fingerprints. Prefer opcode-list fingerprints over string-literal fingerprints when possible — string literals get obfuscated across versions and break your patch on every app update; opcode lists are more stable.

Feature requests. Parity FRs (features requested identically across multiple upstream bundles) are filed cross-bundle. The canonical body lives at rushiranpise/morphe-patches#182. If you want a new feature, file it upstream first — this repo prefers to consume upstream patches rather than fork them.

Pull requests. Prefixed conventional commits: feat(<app>): add <patch>, fix(<app>): repair <patch> against <version>, chore(subtree): sync <upstream>. One patch per PR. Include the target APK version + a before/after screenshot when the patch has visible UI effect.


License

GPL-3.0-or-later. See LICENSE for the full text and NOTICE for third-party attributions.

The GPL-3.0 §7c fork-name-restriction obligation is met by the ReVanced → Morphe rename applied by the base Morphe bundle. Downstream forks of THIS repo must retain the "Morphe" name lineage; a further rename would require another §7c-compliant relabelling.

No warranty. Patched APKs may violate the target app's Terms of Service and may result in your account being flagged, throttled, or banned. Use on throwaway accounts first. We accept no liability for account loss, device damage, or data loss.


Credits

Every upstream bundle we subtree, in reverse-dependency order:

Thanks to every maintainer above for the work they do in the open. Every patch in this bundle rests on the shoulders of theirs.


Contact

Issues, feature requests, or a request for access to the private releases repo: file a GitHub issue. Please include your Android version, device model, target app + version, and (for bug reports) a Morphe Manager log or logcat output around the crash.

No email / no Telegram / no Discord — issues on this repo are the only support surface.