Bug description
First of all, I'm a bit confused as to whether split APKs are supported or not. The GUI screen states that it supports .apkm files, but MorpheApp/morphe-patches#44 states that "split apk's are currently not supported." Is that only specific to YouTube with first-party Morphe patches? A later issue in this repo acknowledged that XAPKs work: #86
I'm trying to patch SoundCloud in the GUI using hoo-dles/morphe-patches, and I'm running into a Failed to parse APK manifest error, followed by APK validation failed: Could not parse APK. The file may be corrupted or not a valid APK.
Selecting the APKM in the GUI brings up an error dialog reading androidx/compose/material3/SnackbarKt:
Though on morphe-cli-1.8.0-dev.6-all.jar, it instead shows:
Clicking OK on the non-dev version immediately closes the app.
The patch suggests using SoundCloud v2026.04.27, which is a split APK in .apkm form on APKMirror, and in case it was actually corrupted, I also tried v2026.03.20 which failed in the same way.
This patch works on URV Manager 1.8.1-dev.16 (morphe-patcher 1.5.0) on Android.
I tried un-splitting the APK using AntiSplit M and selecting that, but it results in the same error.
Tested on:
morphe-cli-1.8.0-dev.6-all.jar
morphe-cli-1.8.0-dev.10-all.jar
morphe-cli-1.8.0-all.jar
morphe-cli-1.8.1-dev.1-all.jar
(I was trying different morphe-patcher versions)
Error logs
C:\Programs\morphe-cli>java -jar morphe-cli-1.8.0-all.jar
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:/C:/Programs/morphe-cli/morphe-cli-1.8.0-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
SLF4J(W): No SLF4J providers were found.
SLF4J(W): Defaulting to no-operation (NOP) logger implementation
SLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details.
[2026-05-11 02:24:58.508] [INFO ] ============================================================
[2026-05-11 02:24:58.509] [INFO ] Morphe-GUI Started
[2026-05-11 02:24:58.510] [INFO ] Version: v1.8.0
[2026-05-11 02:24:58.511] [INFO ] OS: Windows 11 10.0 (amd64)
[2026-05-11 02:24:58.511] [INFO ] Java: 25.0.3 (Eclipse Adoptium) 64-bit
[2026-05-11 02:24:58.513] [INFO ] Memory: 4078 MB max
[2026-05-11 02:24:58.513] [INFO ] User: FibreTTP
[2026-05-11 02:24:58.513] [INFO ] App Data: C:\Users\FibreTTP\AppData\Roaming\morphe-gui
[2026-05-11 02:24:58.514] [INFO ] Working Dir: C:\Programs\morphe-cli
[2026-05-11 02:24:58.514] [INFO ] ============================================================
[2026-05-11 02:24:58.524] [INFO ] Config loaded from C:\Users\FibreTTP\AppData\Roaming\morphe-gui\config.json
[2026-05-11 02:24:58.541] [INFO ] Found ADB in PATH: C:\Programs\platform-tools\adb.exe
[2026-05-11 02:24:58.579] [INFO ] Found 0 device(s)
[2026-05-11 02:24:58.602] [INFO ] Creating PatchRepository for source 'Hoo-dles Patches' (repo=hoo-dles/morphe-patches)
[2026-05-11 02:24:58.603] [INFO ] PatchSourceManager initialized with source 'Hoo-dles Patches' (type=GITHUB)
[2026-05-11 02:24:58.689] [INFO ] Fetching releases from https://api.github.com/repos/hoo-dles/morphe-patches/releases
[2026-05-11 02:24:58.737] [DEBUG] HTTP: REQUEST: https://api.github.com/repos/hoo-dles/morphe-patches/releases
METHOD: GET
[2026-05-11 02:24:59.063] [DEBUG] HTTP: RESPONSE: 200 OK
METHOD: GET
FROM: https://api.github.com/repos/hoo-dles/morphe-patches/releases
[2026-05-11 02:24:59.099] [INFO ] Fetched 30 releases from https://api.github.com/repos/hoo-dles/morphe-patches/releases
[2026-05-11 02:24:59.126] [INFO ] Using cached releases (30 releases, age=0s)
[2026-05-11 02:24:59.127] [INFO ] Using cached patches: C:\Users\FibreTTP\AppData\Roaming\morphe-gui\patches\hoo-dles-morphe-patches\patches-1.30.0.mpp
[2026-05-11 02:24:59.140] [INFO ] Loading patches version: v1.30.0 (saved=null)
[2026-05-11 02:24:59.141] [INFO ] Using cached patches: C:\Users\FibreTTP\AppData\Roaming\morphe-gui\patches\hoo-dles-morphe-patches\patches-1.30.0.mpp
[2026-05-11 02:24:59.143] [INFO ] Loading patches from: C:\Users\FibreTTP\AppData\Roaming\morphe-gui\patches\hoo-dles-morphe-patches\patches-1.30.0.mpp
[2026-05-11 02:24:59.144] [INFO ] Loading patches from: C:\Users\FibreTTP\AppData\Roaming\morphe-gui\patches\hoo-dles-morphe-patches\patches-1.30.0.mpp
[2026-05-11 02:24:59.348] [INFO ] Loaded 70 patches
[2026-05-11 02:24:59.348] [INFO ] Loaded 70 patches
[2026-05-11 02:24:59.355] [INFO ] Loaded 43 supported apps from patches: [AdGuard (4.12.81), AllTrails (26.3.20), Avocards (3.0.18), Busuu (32.30.0(1575420)), Cake (6.4.0), CamScanner (7.15.5.2604080000), Daily Pocket (6.0.7), Duolingo (6.74.4), Eggbun (4.12.19), FotMob (226.16092.20260302), HelloChinese (7.9.25), IbisPaint X (14.0.1), Icon Packer (1.21.0-release), Lingory (1.2.75), Lyfta (1.551), Macro Factor (5.7.6), Macro Factor Workouts (1.1.7), Meme Generator (4.6671), Merriam-Webster (null), Mimo (9.0), MyExpenses (3.9.8), MyFitnessPal (25.50.0), NOMone Desktop (1.9.3-storage), Nova Launcher (81042 (8.5.1)), Pandora (null), Podcast Addict (2026.4), Prime Video (3.0.452.1047), Proton VPN (5.17.72.0), PyDroid3 (8.3_arm64), Smart Launcher (6.6 build 002), SnoreLab (2.27.3.6291), Sofascore (25.12.17), Solid Explorer (3.4.1), SoundCloud (2026.04.27-release), TTMIK Stories (1.16.0), Teuida (1.21.16), Ventusky (53.1), WPS Office (18.24), Wallcraft (3.61.01), Windy (49.0.1), World Map Quiz (3.34.2), XRecorder (2.5.1.1), Xodo (10.13.0)]
[2026-05-11 02:24:59.358] [INFO ] Quick mode: Loaded 43 supported apps: [AdGuard (4.12.81), AllTrails (26.3.20), Avocards (3.0.18), Busuu (32.30.0(1575420)), Cake (6.4.0), CamScanner (7.15.5.2604080000), Daily Pocket (6.0.7), Duolingo (6.74.4), Eggbun (4.12.19), FotMob (226.16092.20260302), HelloChinese (7.9.25), IbisPaint X (14.0.1), Icon Packer (1.21.0-release), Lingory (1.2.75), Lyfta (1.551), Macro Factor (5.7.6), Macro Factor Workouts (1.1.7), Meme Generator (4.6671), Merriam-Webster (null), Mimo (9.0), MyExpenses (3.9.8), MyFitnessPal (25.50.0), NOMone Desktop (1.9.3-storage), Nova Launcher (81042 (8.5.1)), Pandora (null), Podcast Addict (2026.4), Prime Video (3.0.452.1047), Proton VPN (5.17.72.0), PyDroid3 (8.3_arm64), Smart Launcher (6.6 build 002), SnoreLab (2.27.3.6291), Sofascore (25.12.17), Solid Explorer (3.4.1), SoundCloud (2026.04.27-release), TTMIK Stories (1.16.0), Teuida (1.21.16), Ventusky (53.1), WPS Office (18.24), Wallcraft (3.61.01), Windy (49.0.1), World Map Quiz (3.34.2), XRecorder (2.5.1.1), Xodo (10.13.0)]
[2026-05-11 02:25:03.616] [INFO ] Found 0 device(s)
[2026-05-11 02:25:08.651] [INFO ] Found 0 device(s)
[2026-05-11 02:25:13.684] [INFO ] Found 0 device(s)
[2026-05-11 02:25:18.720] [INFO ] Found 0 device(s)
[2026-05-11 02:25:23.751] [INFO ] Found 0 device(s)
[2026-05-11 02:25:28.787] [INFO ] Found 0 device(s)
[2026-05-11 02:25:29.164] [INFO ] File selected: C:\Programs\morphe-cli\base-apks\com.soundcloud.android_2026.04.27-release-352090_4arch_ceeac997832a994de1613a4d58b32c17_apkmirror.com.apkm
[2026-05-11 02:25:29.705] [ERROR] Failed to parse APK manifest
java.lang.IllegalArgumentException: newPosition > limit: (70779322 > 212920)
at java.base/java.nio.Buffer.createPositionException(Unknown Source)
at java.base/java.nio.Buffer.position(Unknown Source)
at java.base/java.nio.ByteBuffer.position(Unknown Source)
at java.base/java.nio.ByteBuffer.position(Unknown Source)
at net.dongliu.apk.parser.utils.Buffers.position(Buffers.java:107)
at net.dongliu.apk.parser.utils.Buffers.position(Buffers.java:114)
at net.dongliu.apk.parser.struct.resource.Type.getResourceEntry(Type.java:45)
at net.dongliu.apk.parser.struct.resource.ResourceTable.getResourcesById(ResourceTable.java:68)
at net.dongliu.apk.parser.struct.ResourceValue$ReferenceResourceValue.toStringValue(ResourceValue.java:148)
at net.dongliu.apk.parser.struct.xml.Attribute.toStringValue(Attribute.java:29)
at net.dongliu.apk.parser.parser.BinaryXmlParser.readXmlNodeStartTag(BinaryXmlParser.java:180)
at net.dongliu.apk.parser.parser.BinaryXmlParser.parse(BinaryXmlParser.java:106)
at net.dongliu.apk.parser.AbstractApkFile.transBinaryXml(AbstractApkFile.java:241)
at net.dongliu.apk.parser.AbstractApkFile.parseManifest(AbstractApkFile.java:197)
at net.dongliu.apk.parser.AbstractApkFile.getApkMeta(AbstractApkFile.java:69)
at app.morphe.gui.ui.screens.home.HomeViewModel.parseApkManifest(HomeViewModel.kt:512)
at app.morphe.gui.ui.screens.home.HomeViewModel.validateAndAnalyzeApk(HomeViewModel.kt:485)
at app.morphe.gui.ui.screens.home.HomeViewModel.access$validateAndAnalyzeApk(HomeViewModel.kt:33)
at app.morphe.gui.ui.screens.home.HomeViewModel$onFileSelected$1$validationResult$1.invokeSuspend(HomeViewModel.kt:409)
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:820)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)
[2026-05-11 02:25:29.714] [WARN ] APK validation failed: Could not parse APK. The file may be corrupted or not a valid APK.
Error was captured in composition.
java.lang.NoClassDefFoundError: androidx/compose/material3/SnackbarKt
at androidx.compose.material3.ComposableSingletons$SnackbarHostKt$lambda$-1548712596$1.invoke(SnackbarHost.kt:220)
at androidx.compose.material3.ComposableSingletons$SnackbarHostKt$lambda$-1548712596$1.invoke(SnackbarHost.kt:220)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:131)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:52)
at androidx.compose.material3.SnackbarHostKt$FadeInFadeOutWithScale$2$1$1.invoke(SnackbarHost.kt:383)
at androidx.compose.material3.SnackbarHostKt$FadeInFadeOutWithScale$2$1$1.invoke(SnackbarHost.kt:383)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:122)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:52)
at androidx.compose.material3.SnackbarHostKt$FadeInFadeOutWithScale$1$1.invoke(SnackbarHost.kt:376)
at androidx.compose.material3.SnackbarHostKt$FadeInFadeOutWithScale$1$1.invoke(SnackbarHost.kt:338)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:131)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:52)
at androidx.compose.material3.SnackbarHostKt.FadeInFadeOutWithScale(SnackbarHost.kt:383)
at androidx.compose.material3.SnackbarHostKt.SnackbarHost(SnackbarHost.kt:235)
at androidx.compose.material3.SnackbarHostKt.SnackbarHost$lambda$1(SnackbarHost.kt)
at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:201)
at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(ComposerImpl.kt:1690)
at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(ComposerImpl.kt:2026)
at androidx.compose.runtime.ComposerImpl.doCompose-aFTiNEg(ComposerImpl.kt:2659)
at androidx.compose.runtime.ComposerImpl.recompose-aFTiNEg$runtime(ComposerImpl.kt:2583)
at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:1080)
at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1406)
at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:159)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2.invokeSuspend$lambda$2(Recomposer.kt:638)
at androidx.compose.runtime.BroadcastFrameClock$FrameAwaiter.resume(BroadcastFrameClock.kt:56)
at androidx.compose.runtime.BroadcastFrameClock.sendFrame$lambda$0(BroadcastFrameClock.kt:71)
at androidx.compose.runtime.internal.AwaiterQueue.flushAndDispatchAwaiters(AwaiterQueue.kt:89)
at androidx.compose.runtime.BroadcastFrameClock.sendFrame(BroadcastFrameClock.kt:71)
at androidx.compose.ui.scene.BaseComposeScene.render(BaseComposeScene.skiko.kt:179)
at androidx.compose.ui.scene.ComposeSceneMediator.onRender$lambda$0$0(ComposeSceneMediator.desktop.kt:677)
at androidx.compose.ui.viewinterop.SwingInteropContainer.postponingExecutingScheduledUpdates(SwingInteropContainer.desktop.kt:251)
at androidx.compose.ui.scene.ComposeSceneMediator.onRender(ComposeSceneMediator.desktop.kt:675)
at org.jetbrains.skiko.SkiaLayer.update$skiko(SkiaLayer.awt.kt:591)
at org.jetbrains.skiko.redrawer.AWTRedrawer.update(AWTRedrawer.kt:54)
at org.jetbrains.skiko.redrawer.Redrawer$DefaultImpls.update$default(Redrawer.kt:12)
at org.jetbrains.skiko.redrawer.Direct3DRedrawer$frameDispatcher$1.invokeSuspend(Direct3DRedrawer.kt:49)
at org.jetbrains.skiko.redrawer.Direct3DRedrawer$frameDispatcher$1.invoke(Direct3DRedrawer.kt)
at org.jetbrains.skiko.redrawer.Direct3DRedrawer$frameDispatcher$1.invoke(Direct3DRedrawer.kt)
at org.jetbrains.skiko.FrameDispatcher$job$1.invokeSuspend(FrameDispatcher.kt:33)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: androidx.compose.material3.SnackbarKt
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 50 more
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: androidx/compose/material3/SnackbarKt
at androidx.compose.material3.ComposableSingletons$SnackbarHostKt$lambda$-1548712596$1.invoke(SnackbarHost.kt:220)
at androidx.compose.material3.ComposableSingletons$SnackbarHostKt$lambda$-1548712596$1.invoke(SnackbarHost.kt:220)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:131)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:52)
at androidx.compose.material3.SnackbarHostKt$FadeInFadeOutWithScale$2$1$1.invoke(SnackbarHost.kt:383)
at androidx.compose.material3.SnackbarHostKt$FadeInFadeOutWithScale$2$1$1.invoke(SnackbarHost.kt:383)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:122)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:52)
at androidx.compose.material3.SnackbarHostKt$FadeInFadeOutWithScale$1$1.invoke(SnackbarHost.kt:376)
at androidx.compose.material3.SnackbarHostKt$FadeInFadeOutWithScale$1$1.invoke(SnackbarHost.kt:338)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:131)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:52)
at androidx.compose.material3.SnackbarHostKt.FadeInFadeOutWithScale(SnackbarHost.kt:383)
at androidx.compose.material3.SnackbarHostKt.SnackbarHost(SnackbarHost.kt:235)
at androidx.compose.material3.SnackbarHostKt.SnackbarHost$lambda$1(SnackbarHost.kt)
at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:201)
at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(ComposerImpl.kt:1690)
at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(ComposerImpl.kt:2026)
at androidx.compose.runtime.ComposerImpl.doCompose-aFTiNEg(ComposerImpl.kt:2659)
at androidx.compose.runtime.ComposerImpl.recompose-aFTiNEg$runtime(ComposerImpl.kt:2583)
at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:1080)
at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1406)
at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:159)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2.invokeSuspend$lambda$2(Recomposer.kt:638)
at androidx.compose.runtime.BroadcastFrameClock$FrameAwaiter.resume(BroadcastFrameClock.kt:56)
at androidx.compose.runtime.BroadcastFrameClock.sendFrame$lambda$0(BroadcastFrameClock.kt:71)
at androidx.compose.runtime.internal.AwaiterQueue.flushAndDispatchAwaiters(AwaiterQueue.kt:89)
at androidx.compose.runtime.BroadcastFrameClock.sendFrame(BroadcastFrameClock.kt:71)
at androidx.compose.ui.scene.BaseComposeScene.render(BaseComposeScene.skiko.kt:179)
at androidx.compose.ui.scene.ComposeSceneMediator.onRender$lambda$0$0(ComposeSceneMediator.desktop.kt:677)
at androidx.compose.ui.viewinterop.SwingInteropContainer.postponingExecutingScheduledUpdates(SwingInteropContainer.desktop.kt:251)
at androidx.compose.ui.scene.ComposeSceneMediator.onRender(ComposeSceneMediator.desktop.kt:675)
at org.jetbrains.skiko.SkiaLayer.update$skiko(SkiaLayer.awt.kt:591)
at org.jetbrains.skiko.redrawer.AWTRedrawer.update(AWTRedrawer.kt:54)
at org.jetbrains.skiko.redrawer.Redrawer$DefaultImpls.update$default(Redrawer.kt:12)
at org.jetbrains.skiko.redrawer.Direct3DRedrawer$frameDispatcher$1.invokeSuspend(Direct3DRedrawer.kt:49)
at org.jetbrains.skiko.redrawer.Direct3DRedrawer$frameDispatcher$1.invoke(Direct3DRedrawer.kt)
at org.jetbrains.skiko.redrawer.Direct3DRedrawer$frameDispatcher$1.invoke(Direct3DRedrawer.kt)
at org.jetbrains.skiko.FrameDispatcher$job$1.invokeSuspend(FrameDispatcher.kt:33)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.scene.ComposeContainer$DesktopCoroutineExceptionHandler@702a7120, androidx.compose.runtime.BroadcastFrameClock@121eff29, StandaloneCoroutine{Cancelling}@13b2e34, FlushCoroutineDispatcher@32a5bc6a]
Caused by: java.lang.ClassNotFoundException: androidx.compose.material3.SnackbarKt
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 50 more
Solution
No response
Additional context
No response
Acknowledgements
Bug description
First of all, I'm a bit confused as to whether split APKs are supported or not. The GUI screen states that it supports
.apkmfiles, but MorpheApp/morphe-patches#44 states that "split apk's are currently not supported." Is that only specific to YouTube with first-party Morphe patches? A later issue in this repo acknowledged that XAPKs work: #86I'm trying to patch SoundCloud in the GUI using hoo-dles/morphe-patches, and I'm running into a
Failed to parse APK manifesterror, followed byAPK validation failed: Could not parse APK. The file may be corrupted or not a valid APK.Selecting the APKM in the GUI brings up an error dialog reading
androidx/compose/material3/SnackbarKt:Though on
morphe-cli-1.8.0-dev.6-all.jar, it instead shows:Clicking OK on the non-dev version immediately closes the app.
The patch suggests using SoundCloud v2026.04.27, which is a split APK in
.apkmform on APKMirror, and in case it was actually corrupted, I also tried v2026.03.20 which failed in the same way.This patch works on URV Manager 1.8.1-dev.16 (
morphe-patcher1.5.0) on Android.I tried un-splitting the APK using AntiSplit M and selecting that, but it results in the same error.
Tested on:
morphe-cli-1.8.0-dev.6-all.jarmorphe-cli-1.8.0-dev.10-all.jarmorphe-cli-1.8.0-all.jarmorphe-cli-1.8.1-dev.1-all.jar(I was trying different morphe-patcher versions)
Error logs
Solution
No response
Additional context
No response
Acknowledgements