Skip to content

bug: [GUI] Cannot patch with multiple sources when anddea/revanced-patches is also enabled #177

@FibreTTP

Description

@FibreTTP

Bug description

Attempting to patch any app with any source and anddea/revanced-patches (RVX) v4.1.0-dev.8 enabled fails.

HOWEVER

This depends on a few circumstances:

  • If [some source] is first in the source order, it WILL fail.
  • If RVX is first in the source order, it will NOT fail.
  • If YouTube or YTM is being patched with both official Morphe and RVX, it does not matter what the source order is, the process WILL fail.
  • If YouTube is being patched with [other source] and RVX, and if RVX is first in the source order, it will NOT fail.

I'm sure there's some more scenarios in which failures occur.

The error log below is from trying to patch YouTube with official Morphe v1.31.0 and RVX v4.1.0-dev.8, with Morphe above RVX in the source order. All patches from official Morphe were enabled (except the universal patches), and only Change version code was enabled in RVX. Continue on error does not affect whether or not the patch fails.

This same patch configuration succeeds on URV Manager, installs without issue, and works fine.

Error logs

June 13, 2026 7:02:42 PM app.morphe.engine.MorpheData resolveRoot
INFO: Morphe data root: S:\morphe-cli\morphe-data (JAR-adjacent)
WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::load has been called by org.jetbrains.skiko.Library in an unnamed module (file:/S:/morphe-cli/morphe-cli-1.9.1-all.jar)
WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
WARNING: Restricted methods will be blocked in a future release unless native access is enabled

[2026-06-13 19:02:44.067] [INFO ] ============================================================
[2026-06-13 19:02:44.319] [INFO ] Morphe-GUI Started
[2026-06-13 19:02:44.321] [INFO ] Version: v1.9.1
[2026-06-13 19:02:44.323] [INFO ] OS: Windows 11 10.0 (amd64)
[2026-06-13 19:02:44.324] [INFO ] Java: 25.0.3 (Eclipse Adoptium) 64-bit
[2026-06-13 19:02:44.325] [INFO ] Memory: 4078 MB max
[2026-06-13 19:02:44.327] [INFO ] User: FibreTTP
[2026-06-13 19:02:44.328] [INFO ] App Data: S:\morphe-cli\morphe-data
[2026-06-13 19:02:44.329] [INFO ] Working Dir: S:\morphe-cli
[2026-06-13 19:02:44.330] [INFO ] ============================================================
[2026-06-13 19:02:44.334] [INFO ] Config loaded from S:\morphe-cli\morphe-data\config.json
[2026-06-13 19:02:44.363] [INFO ] Creating PatchRepository for source 'anddea/revanced-patches' (repo=anddea/revanced-patches, provider=GITHUB)
[2026-06-13 19:02:44.409] [INFO ] PatchSourceManager initialized with source 'anddea/revanced-patches' (type=GITHUB)
[2026-06-13 19:02:44.411] [INFO ] Enabled sources: Morphe Patches, anddea/revanced-patches
[2026-06-13 19:02:44.443] [INFO ] PatchSourceManager: active mode → EXPERT
[2026-06-13 19:02:44.541] [INFO ] Creating PatchRepository for source 'Morphe Patches' (repo=MorpheApp/morphe-patches, provider=GITHUB)
June 13, 2026 7:02:44 PM app.morphe.engine.patches.GitHubPatchSource$listReleases$2 invokeSuspend
INFO: GitHub: fetching releases from https://api.github.com/repos/anddea/revanced-patches/releases
June 13, 2026 7:02:44 PM app.morphe.engine.patches.GitHubPatchSource$listReleases$2 invokeSuspend
INFO: GitHub: fetching releases from https://api.github.com/repos/MorpheApp/morphe-patches/releases
[2026-06-13 19:02:44.879] [DEBUG] HTTP: REQUEST: https://api.github.com/repos/anddea/revanced-patches/releases
METHOD: GET
[2026-06-13 19:02:44.879] [DEBUG] HTTP: REQUEST: https://api.github.com/repos/MorpheApp/morphe-patches/releases
METHOD: GET
[2026-06-13 19:02:45.959] [DEBUG] HTTP: RESPONSE: 200 OK
METHOD: GET
FROM: https://api.github.com/repos/MorpheApp/morphe-patches/releases
[2026-06-13 19:02:45.974] [DEBUG] HTTP: RESPONSE: 200 OK
METHOD: GET
FROM: https://api.github.com/repos/anddea/revanced-patches/releases
June 13, 2026 7:02:46 PM app.morphe.engine.patches.GitHubPatchSource$listReleases$2 invokeSuspend
INFO: GitHub: fetched 30 releases from anddea/revanced-patches
June 13, 2026 7:02:46 PM app.morphe.engine.patches.GitHubPatchSource$listReleases$2 invokeSuspend
INFO: GitHub: fetched 30 releases from MorpheApp/morphe-patches
[2026-06-13 19:02:46.249] [INFO ] Using cached patches: S:\morphe-cli\morphe-data\patches\MorpheApp-morphe-patches\v1.31.0__patches-1.31.0.mpp (7470416 bytes)
[2026-06-13 19:02:46.249] [INFO ] Using cached patches: S:\morphe-cli\morphe-data\patches\anddea-revanced-patches\v4.1.0-dev.8__patches-4.1.0-dev.8.mpp (24918241 bytes)
June 13, 2026 7:02:46 PM app.morphe.engine.MultiSourceLoader$loadOne$2 invokeSuspend
INFO: MultiSourceLoader: loaded 114 patches from 'anddea/revanced-patches'
June 13, 2026 7:02:46 PM app.morphe.engine.MultiSourceLoader$loadOne$2 invokeSuspend
INFO: MultiSourceLoader: loaded 114 patches from 'Morphe Patches'
[2026-06-13 19:02:46.628] [INFO ] Loaded 3 supported apps from 2 source(s): [Reddit, YouTube, YouTube Music]
[2026-06-13 19:03:01.894] [INFO ] File selected: S:\morphe-cli\base-apks\com.google.android.youtube_20.51.39-1558707648_minAPI28(arm64-v8a,armeabi-v7a,x86,x86_64)(nodpi)_apkmirror.com.apk
[2026-06-13 19:03:02.222] [INFO ] Parsed APK: com.google.android.youtube v20.51.39 (recommended=20.51.39, minSdk=28, archs=[arm64-v8a, armeabi-v7a, x86, x86_64])
[2026-06-13 19:03:02.224] [INFO ] APK analyzed successfully: YouTube
[2026-06-13 19:03:03.268] [INFO ] Loading patches from: S:\morphe-cli\morphe-data\patches\anddea-revanced-patches\v4.1.0-dev.8__patches-4.1.0-dev.8.mpp
[2026-06-13 19:03:03.268] [INFO ] Loading patches from: S:\morphe-cli\morphe-data\patches\MorpheApp-morphe-patches\v1.31.0__patches-1.31.0.mpp
[2026-06-13 19:03:03.511] [INFO ] Loaded 72 patches for com.google.android.youtube
[2026-06-13 19:03:03.543] [INFO ] Loaded 74 patches for com.google.android.youtube
[2026-06-13 19:03:03.714] [INFO ] Loaded 2 bundle(s), 146 total patches for com.google.android.youtube
[2026-06-13 19:03:03.737] [INFO ] Applied saved patch preferences for com.google.android.youtube (2/2 bundle(s))
[2026-06-13 19:04:03.869] [INFO ] Saved patch preferences for Morphe Patches / com.google.android.youtube (72 entries)
[2026-06-13 19:04:03.876] [INFO ] Saved patch preferences for anddea/revanced-patches / com.google.android.youtube (74 entries)
Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: 'app.morphe.patcher.patch.BytecodePatch app.morphe.patches.all.misc.transformation.TransformInstructionsPatchKt.transformInstructionsPatch$default(kotlin.jvm.functions.Function4, kotlin.jvm.functions.Function2, kotlin.jvm.functions.Function1, boolean, int, java.lang.Object)'
        at app.morphe.patches.all.misc.connectivity.wifi.spoof.SpoofWifiPatchKt.spoofWifiPatch$lambda$0(SpoofWifiPatch.kt:22)
        at app.morphe.patcher.patch.PatchKt.buildPatch(Patch.kt:537)
        at app.morphe.patcher.patch.PatchKt.bytecodePatch(Patch.kt:605)
        at app.morphe.patches.all.misc.connectivity.wifi.spoof.SpoofWifiPatchKt.<clinit>(SpoofWifiPatch.kt:14)
        at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method)
        at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unknown Source)
        at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(Unknown Source)
        at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newMethodAccessor(Unknown Source)
        at java.base/jdk.internal.reflect.ReflectionFactory.newMethodAccessor(Unknown Source)
        at java.base/java.lang.reflect.Method.acquireMethodAccessor(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at app.morphe.patcher.patch.PatchLoader$Companion.getPatchMethods(Patch.kt:804)
        at app.morphe.patcher.patch.PatchLoader$Companion.loadPatches$lambda$0$1(Patch.kt:821)
        at kotlin.sequences.FlatteningSequence$iterator$1.ensureItemIterator(Sequences.kt:363)
        at kotlin.sequences.FlatteningSequence$iterator$1.hasNext(Sequences.kt:351)
        at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:202)
        at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:227)
        at kotlin.sequences.SequencesKt___SequencesKt.toSet(_Sequences.kt:857)
        at app.morphe.patcher.patch.PatchLoader$Companion.loadPatches(Patch.kt:824)
        at app.morphe.patcher.patch.PatchLoader$Companion.access$loadPatches(Patch.kt:784)
        at app.morphe.patcher.patch.PatchLoader.<init>(Patch.kt:736)
        at app.morphe.patcher.patch.PatchLoader.<init>(Patch.kt)
        at app.morphe.patcher.patch.PatchLoader$Jar.<init>(Patch.kt:745)
        at app.morphe.patcher.patch.PatchKt.loadPatchesFromJar(Patch.kt:845)
        at app.morphe.gui.util.PatchService$patch$3.invokeSuspend(PatchService.kt:118)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
        at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124)
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:798)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)
        Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineName(app.morphe.gui.ui.screens.patching.PatchingScreen:app.morphe.gui.ui.screens.patching.PatchingViewModel:default), StandaloneCoroutine{Cancelling}@5205ec3f, Dispatchers.Main.immediate]
[2026-06-13 19:05:48.619] [INFO ] Patching cancelled by user
[2026-06-13 19:05:51.830] [DEBUG] Skipping adb kill-server — daemon wasn't started by Morphe

Solution

No response

Additional context

I'm attempting to use the Change version code universal patch from RVX to alter the version code of multiple apps (some non-YouTube) at patch time for use with my self-hosted fdroidserver repo.

I am NOT attempting to use any other patches from RVX.

Acknowledgements

  • I have checked all open and closed bug reports and this is not a duplicate.
  • I have chosen an appropriate title.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions