From c2467403bcca19486d7b8d51ebfbb09054ace326 Mon Sep 17 00:00:00 2001
From: Prateek <129204458+prateek-who@users.noreply.github.com>
Date: Wed, 29 Apr 2026 20:56:01 +0530
Subject: [PATCH 1/5] documentation fix
---
README.md | 134 ++-
docs/README.md | 10 +-
docs/documentation.md | 1047 ++++++++++++++++++++
docs/images/app_selected.png | Bin 0 -> 364458 bytes
docs/images/documentation/cli_overview.png | Bin 0 -> 57194 bytes
docs/images/home_screen.png | Bin 0 -> 366298 bytes
docs/images/patching.png | Bin 0 -> 338730 bytes
docs/images/success.png | Bin 0 -> 372225 bytes
8 files changed, 1155 insertions(+), 36 deletions(-)
create mode 100644 docs/documentation.md
create mode 100644 docs/images/app_selected.png
create mode 100644 docs/images/documentation/cli_overview.png
create mode 100644 docs/images/home_screen.png
create mode 100644 docs/images/patching.png
create mode 100644 docs/images/success.png
diff --git a/README.md b/README.md
index 3ed24dad..1eae6b10 100644
--- a/README.md
+++ b/README.md
@@ -15,51 +15,131 @@
-# 💻 Morphe CLI
+
Morphe Desktop
-Command-line application to use Morphe.
-
-## ❓ About
+## About
+Morphe Desktop is a command-line and a GUI application that uses [Morphe Patcher](https://github.com/MorpheApp/morphe-patcher) to patch Android apps.
-Morphe CLI is a command-line application that uses [Morphe Patcher](https://github.com/MorpheApp/morphe-patcher) to patch Android apps.
+Morphe Desktop's CLI is based on the prior work of [ReVanced](https://github.com/ReVanced/revanced-cli).
+The GUI is developed by the Morphe team.
+All modifications made by Morphe can be found in the Git history.
-Morphe CLI is based off the prior work of [ReVanced](https://github.com/ReVanced/revanced-cli).
-All modifications made by Morphe, along with their dates, can be found in the Git history.
-## 💪 Features
+## Prerequisites
+1. [Required] Java Runtime Environment 11 or above ([Azul Zulu JRE](https://www.azul.com/downloads/?version=java-11-lts&package=jre#zulu) or [OpenJDK](https://jdk.java.net/archive/)).
+2. [Required] Morphe Desktop jar file (morphe-desktop-*-all.jar). You can download the most recent stable version of Morphe Desktop from [here](https://github.com/MorpheApp/morphe-cli/releases/latest).
+3. [Required] Patches mpp file (patches-*.mpp). You can download the latest stable patch file from [here](https://github.com/MorpheApp/morphe-patches/releases/latest).
+4. [Required] Desired app file (app.apk). You can download your apk from [APK Mirror](https://www.apkmirror.com/).
+5. [Optional] [Android Debug Bridge (ADB)](https://developer.android.com/studio/command-line/adb) Only if you want to install the patched APK file on your device
-Some of the features Morphe CLI provides are:
+## Documentation
+Learn how to use Morphe Desktop by following the [documentation](/docs/documentation.md).
-- 💉 **Patch apps**: Harness Morphe Patcher to patch Android apps.
-- 💾 **Install and uninstall apps**: Install and uninstall Apps via ADB,
- using the Android package manager or by mounting using root permissions.
-- 📃 **List patches from patch bundles**: List available patches, compatible packages, and versions.
-- 💪 **Flexibility and functionality**: Apply any combination of patches to any version of Android apps.
+## Getting Started
+Morphe Desktop is a powerful little application that allows you to patch and install(via ADB) android apps. Although sticking to the suggested apps is recommended,
+you can try and experiment with other apps to your hearts content!
-## 🔽 Download
+Morphe Desktop runs in two modes:
+- CLI: You can run the CLI mode by directly calling it in your preferred terminal.
+- GUI: You can run the GUI mode by double-clicking the .jar file. This will open the Morphe Desktop window.
-You can download the most recent version of Morphe CLI from
-[here](https://github.com/MorpheApp/morphe-cli/releases/latest).
-Learn how to use Morphe CLI by following the [documentation](/docs).
+While there are a lot of things that you can do and explore, for the time being in this section, we'll focus on running our first patching and getting a patched apk with the CLI and GUI.
-## 📚 Everything else
+> [!TIP]
+> If this your first time using Morphe Desktop, head over to the [GUI](#gui) section instead of [CLI](#cli).
+> Once you get the hang of things, you can start tinkering with the CLI!
-### 📙 Contributing
+### First Run
-Thank you for considering contributing to Morphe CLI.
-You can find the contribution guidelines [here](CONTRIBUTING.md).
+#### CLI
+Following the [prerequisites](#prerequisites) section will get you the two basic but very required files for most patching:
+- morphe-desktop-*-all.jar file
+- patches-*.mpp
+
+Ideally place both of these files and your desired apk (preferably YouTube for your first run) file in the same folder for now to avoid path headaches.
+
+##### Steps:
+1. Open the terminal in the folder you have placed your files. If you are not in that folder, go there by:
+ ```
+ cd path/to/your/folder
+ ```
+
+2. Run the `ls` command if required to check the contents of the folder and confirm that you have all the files over there.
+
+3. Now run the patch command to instruct the morphe-desktop.jar to run the patching process by using the patch command on your apk file like this:
+ ```
+ java -jar morphe-desktop-*-all.jar patch -p patches-*.mpp your_app.apk
+ ```
+4. This should start the patching process. You should be able to see a bunch of patches being applied like such:
+ ```
+ INFO: Loading patches
+ INFO: Decoding app manifest
+ INFO: Setting patch options
+ INFO: "Override certificate pinning" disabled
+ .
+ .
+ .
+ .
+ .
+ INFO: Aligning APK
+ INFO: Signing APK
+ INFO: Saved to /your/path/your_app-patched.apk
+ ```
+
+> [!NOTE]
+> If you run into any issues or errors, please head over to the [documentation](/docs/documentation.md).
+
+
+
+5. You should now have a patched apk with the name of:
+ ```
+ your_app-patched.apk
+ ```
+Voilà! This is your final patched apk. Go ahead, install this apk on your device and try it out!
+
+Now head over to the [documentation](/docs/documentation.md)
+
+#### GUI
+Unlike the CLI, the GUI is much user-friendly and straight forward to understand. If this is your first time, the GUI will open in simplified mode/ non-expert mode.
+
+
+##### Steps:
+1. Double-click on the downloaded morphe-desktop-*-all.jar. It should open like this:
-### 🛠️ Building
+
+
+2. All you need to do here drag and drop your apk/apkm into the application. Once done, click on the 'Patch' button to begin patching:
+
+
+
+3. This should start the patching process and you should be able to see something like this:
+
+
+
+> [!NOTE]
+> If you run into any issues or errors, please head over to the [documentation](/docs/documentation.md).
+
+
+4. Once the patching is done, you will see the completed screen. You can now copy the apk over to your device and install it. If you happen to have ADB enabled, you can also directly install it via the application.
+
+
+
+Bravo! That should be your first successful patch. If you run into issues or want to tinker around more, please head to the [documentation](docs/documentation.md).
+
+
+[//]: # (## Everything else)
+## Contributing
+Thank you for considering contributing to Morphe Desktop.
+You can find the contribution guidelines [here](CONTRIBUTING.md).
-To build a Morphe CLI, you can follow the [documentation](/docs).
-### 📃 Documentation
+[//]: # (### Building)
-You can find the documentation of Morphe CLI [here](/docs).
+[//]: # (To build Morphe Desktop, you can follow the [documentation](/docs).)
-## 📜 License
+## License
Morphe Patches are licensed under the [GNU General Public License v3.0](LICENSE), with additional conditions under GPLv3 Section 7:
- **Name Restriction (7c):** The name **"Morphe"** may not be used for derivative works.
diff --git a/docs/README.md b/docs/README.md
index fb4620f0..172a7b7a 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,9 +1 @@
-# 💻 Documentation and guides of Morphe CLI
-
-This documentation contains topics around [Morphe CLI](https://github.com/MorpheApp/morphes-cli).
-
-## 📖 Table of contents
-
-1. [💼 Prerequisites](0_prerequisites.md)
-2. [🛠️ Using Morphe CLI](1_usage.md)
-3. [🔨 Building Morphe CLI](2_building.md)
+#### For full documentation, see [documentation.md](documentation.md).
\ No newline at end of file
diff --git a/docs/documentation.md b/docs/documentation.md
new file mode 100644
index 00000000..25a4ad9d
--- /dev/null
+++ b/docs/documentation.md
@@ -0,0 +1,1047 @@
+🛠️ Morphe Desktop Documentation
+
+This is the complete documentation for Morphe Desktop. It covers all the CLI sub-commands, flags, GUI usage
+and common workflows. If you're brand new, it is recommended to start with the [first-run](../README.md#first-run) section
+and then come back here.
+
+Now that you have gone through with your first run, lets dig deeper to understand how the magic happens and how you can make it even better!
+
+
+Table of contents
+
+- [Prerequisites](#prerequisites)
+
+- [CLI](#cli)
+ - [General flags](#general-flags)
+ - [patch](#subcommand-1-patch)
+ - [list-patches](#subcommand-2-list-patches)
+ - [list-versions](#subcommand-3-list-versions)
+ - [options-create](#subcommand-4-options-create)
+ - [utility](#subcommand-5-utility)
+ - [install](#utility-install)
+ - [uninstall](#utility-uninstall)
+ - [Value Types Reference](#value-types-reference)
+- [GUI](#gui)
+- [Building](#building)
+
+
+
+
+
+Prerequisites
+
+1. [Required] Java Runtime Environment 21 or above ([Azul Zulu JRE](https://www.azul.com/downloads/?version=java-21-lts&package=jre#zulu), [Temurin](https://adoptium.net/temurin/releases?version=21&os=any&arch=any) or [OpenJDK](https://jdk.java.net/archive/)).
+2. [Required] Morphe Desktop jar file (morphe-desktop-*-all.jar). You can download the most recent stable version of Morphe Desktop from [here](https://github.com/MorpheApp/morphe-cli/releases/latest).
+3. [Required] Patches mpp file (patches-*.mpp). You can download the latest stable patch file from [here](https://github.com/MorpheApp/morphe-patches/releases/latest).
+4. [Required] Desired app file (app.apk). You can download your apk from [APK Mirror](https://www.apkmirror.com/).
+5. [Optional] [Android Debug Bridge (ADB)](https://developer.android.com/studio/command-line/adb) Only if you want to install the patched APK file on your device directly from your computer.
+
+
+
+
+CLI
+
+The CLI suite is an extremely powerful tool. Often, new features will first appear in the CLI and then will be slowly implemented onto the GUI. Hence, getting a hang of the CLI is very advantageous.
+
+The CLI has some general flags but is mainly divided into 5 main sub-commands (and they all lived in harmony, until the fire nation attacked. Caught that reference?):
+
+
+
+### General flags:
+
+#### 1. `-h`, `--help`:
+
+Shows all the general flags and sub commands available.
+```
+java -jar morphe-desktop-*-all.jar --help
+```
+
+#### 2. `-V`, `--version`:
+
+Shows the current version of the morphe-desktop.jar
+```
+java -jar morphe-desktop-*-all.jar --version
+```
+
+Subcommand 1: patch
+
+This is the most fundamental sub-command. Add the `patch` keyword to run this sub-command.
+```
+java -jar morphe-desktop-*-all.jar patch [flag/s]
+```
+
+Here is a quick lookup for all the flags under this subcommand:
+
+| Flag | Description |
+|--------------------------------|---------------------------------------------------------------|
+| `-p`, `--patches` | Paths to .mpp files or GitHub repo URLs |
+| `--prerelease` | Fetch latest dev pre-release instead of stable release |
+| *(positional arg)* | APK file to patch |
+| `-o`, `--out` | Path to save the patched APK to |
+| `-e`, `--enable` | Enable a patch by name |
+| `--ei` | Enable a patch by index |
+| `-d`, `--disable` | Disable a patch by name |
+| `--di` | Disable a patch by index |
+| `-O`, `--options` | Set patch option values (e.g. `-Okey=value`) |
+| `--exclusive` | Disable all patches except explicitly enabled ones |
+| `-f`, `--force` | Skip APK version compatibility check |
+| `-i`, `--install` | Install to ADB device (optional serial) |
+| `--mount` | Install by mounting over existing app (requires root) |
+| `--keystore` | Path to keystore file for signing |
+| `--keystore-password` | Keystore password |
+| `--keystore-entry-alias` | Alias of the key pair in the keystore |
+| `--keystore-entry-password` | Password for the keystore entry |
+| `--signer` | Signer name in the APK signature |
+| `--unsigned` | Skip signing the final APK |
+| `-t`, `--temporary-files-path` | Path to store temp files |
+| `--purge` | Delete temp files after patching |
+| `--custom-aapt2-binary` | Deprecated. No effect, will be removed in a future release |
+| `--force-apktool` | Deprecated. No effect, will be removed in a future release |
+| `--striplibs` | Architectures to keep, comma-separated (e.g. `arm64-v8a,x86`) |
+| `--bytecode-mode` | Bytecode mode: `FULL`, `STRIP_SAFE`, or `STRIP_FAST` |
+| `--verify-with-sdk` | Verify the patched DEX/APK using an Android SDK |
+| `--continue-on-error` | Continue patching if a patch fails |
+| `--options-file` | Path to options JSON file |
+| `--options-update` | Auto-update options JSON file after patching |
+| `-r`, `--result-file` | Path to save patching result JSON |
+
+> [!NOTE]
+> The examples used for each flag below only show the usage of that specific flag, but in practice, you'll almost always combine multiple flags together to customize your patching. Here's an example of a more complete command:
+> ```
+> java -jar morphe-desktop-*-all.jar patch -p patches.mpp -o your_app_patched.apk --striplibs arm64-v8a --force --continue-on-error -d "change package name" -d "spoof signature" "your_app.apk"
+> ```
+
+
+#### 1. `-p`, `--patches`:
+Required: Yes
+
+Default: -
+
+This flag is used to specify the patch file to patch your apk. You can pass local .mpp file paths or a GitHub repository URL. When a URL is provided, Morphe will automatically download the .mpp file from the latest release and cache it for future runs.
+```
+java -jar morphe-desktop-*-all.jar patch --patches patches-*.mpp your_app.apk
+```
+
+You can also pass a GitHub repo URL:
+```
+java -jar morphe-desktop-*-all.jar patch --patches https://github.com/MorpheApp/morphe-patches your_app.apk
+```
+
+Or a specific release URL:
+```
+java -jar morphe-desktop-*-all.jar patch --patches https://github.com/MorpheApp/morphe-patches/releases/tag/v1.0.0 your_app.apk
+```
+
+
+#### 2. `--prerelease`:
+Required: No
+
+Default: `false`
+
+When using a GitHub repo URL with `--patches`, fetch the latest dev pre-release instead of the latest stable release.
+```
+java -jar morphe-desktop-*-all.jar patch --patches https://github.com/MorpheApp/morphe-patches --prerelease your_app.apk
+```
+
+
+#### 3. Positional argument (APK file):
+Required: Yes
+
+Default: -
+
+The APK file you want to patch. This is passed directly without a flag name, at the end of the command.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp your_app.apk
+```
+
+> [!NOTE]
+> Morphe also supports `.apkm` files (split APK bundles). If you pass an `.apkm` file, Morphe will automatically merge the splits before patching.
+
+
+#### 4. `-o`, `--out`:
+Required: No
+
+Default: Same directory as the APK, with `-patched` appended (e.g. `your_app-patched.apk`)
+
+Specify a custom output path for the patched APK.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp -o /path/to/output.apk your_app.apk
+```
+
+
+#### 5. `-e`, `--enable`:
+Required: No
+
+Default: -
+
+Enable a specific patch by its exact name. Can be used multiple times to enable several patches.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp -e "Patch name" -e "Another patch" your_app.apk
+```
+
+
+#### 6. `--ei`:
+Required: No
+
+Default: -
+
+Enable a specific patch by its index number. Can be used multiple times. Use `list-patches` to find the index of each patch.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --ei 1 --ei 5 your_app.apk
+```
+
+
+#### 7. `-d`, `--disable`:
+Required: No
+
+Default: -
+
+Disable a specific patch by its exact name. Can be used multiple times.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp -d "Patch name" your_app.apk
+```
+
+
+#### 8. `--di`:
+Required: No
+
+Default: -
+
+Disable a specific patch by its index number. Can be used multiple times. Use `list-patches` to find the index of each patch.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --di 456 your_app.apk
+```
+
+> [!TIP]
+> You can combine `-e`, `-d`, `--ei`, `--di` and `--exclusive` in the same command.
+> ```
+> java -jar morphe-desktop-*-all.jar patch -p patches.mpp --exclusive -e "Patch name" --ei 123 your_app.apk
+> ```
+
+
+#### 9. `-O`, `--options`:
+Required: No
+
+Default: -
+
+Set option values for patches. Options are key-value pairs passed alongside patch enable flags. To set a value to null, omit the value.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp -e "Patch name" -Okey1=value1 -Okey2=value2 your_app.apk
+```
+
+To set an option to null:
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp -e "Patch name" -Okey1 your_app.apk
+```
+
+> [!WARNING]
+> Option values are typed. Setting a value with the wrong type can cause the patch to fail. Use `list-patches --with-options` to see the expected types.
+>
+> Common types: `string`, `true`/`false`, `123` (integer), `1.0` (double), `[item1,item2]` (list)
+
+
+#### 10. `--exclusive`:
+Required: No
+
+Default: `false`
+
+Disable all patches except the ones you explicitly enable with `-e` or `--ei`. Useful when you only want a specific set of patches applied.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --exclusive -e "Patch name" your_app.apk
+```
+
+
+#### 11. `-f`, `--force`:
+Required: No
+
+Default: `false`
+
+Skip the APK version compatibility check. By default, Morphe will warn you and skip patches that aren't compatible with your APK's version. This flag forces all compatible patches to run regardless.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --force your_app.apk
+```
+
+> [!TIP]
+> Patches are built for specific app versions.
+> If you're using versions that are newer or older than the recommended ones, Morphe will skip all the incompatible patches (which is almost all of them since the version don't match) by default. **Use `--force` to apply them anyway** - they may still work fine, especially on recent versions.
+
+
+#### 12. `-i`, `--install`:
+Required: No
+
+Default: -
+
+Automatically install the patched APK to a connected ADB device after patching. If no serial is provided, it installs to the first connected device. You can optionally specify a device serial.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp -i your_app.apk
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp -i SERIAL123 your_app.apk
+```
+
+> [!TIP]
+> Make sure ADB is working before using this flag:
+> ```
+> adb shell exit
+> ```
+
+
+#### 13. `--mount`:
+Required: No
+
+Default: `false`
+
+Install the patched APK by mounting it on top of the original app. Requires root access and the original app to be installed on the device.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp -i --mount your_app.apk
+```
+
+> [!NOTE]
+> Make sure you have root permissions:
+> ```
+> adb shell su -c exit
+> ```
+
+
+#### 14. `--keystore`:
+Required: No
+
+Default: Auto-generated keystore next to the output APK
+
+Path to a keystore file containing a private key and certificate pair to sign the patched APK with. If not specified, Morphe generates a new keystore automatically.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --keystore /path/to/keystore.jks your_app.apk
+```
+
+
+#### 15. `--keystore-password`:
+Required: No
+
+Default: Empty password
+
+Password to open the keystore file.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --keystore keystore.jks --keystore-password "mypassword" your_app.apk
+```
+
+
+#### 16. `--keystore-entry-alias`:
+Required: No
+
+Default: `"Morphe Key"`
+
+The alias of the private key entry inside the keystore.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --keystore keystore.jks --keystore-entry-alias "my-alias" your_app.apk
+```
+
+
+#### 17. `--keystore-entry-password`:
+Required: No
+
+Default: Empty password
+
+Password for the specific keystore entry.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --keystore keystore.jks --keystore-entry-password "mypassword" your_app.apk
+```
+
+> [!IMPORTANT]
+> **Using a keystore from the Morphe Manager Android app?** The Manager uses different defaults than the CLI:
+> - CLI default alias: `"Morphe Key"`, password: empty
+> - Manager default alias: `"Morphe"`, password: `"Morphe"`
+>
+> To use your Manager keystore with the CLI:
+> ```
+> java -jar morphe-desktop-*-all.jar patch -p patches.mpp --keystore morphe.keystore --keystore-entry-alias="Morphe" --keystore-entry-password="Morphe" your_app.apk
+> ```
+
+
+#### 18. `--signer`:
+Required: No
+
+Default: `"Morphe"`
+
+The name of the signer embedded in the APK signature.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --signer "My Signer" your_app.apk
+```
+
+
+#### 19. `--unsigned`:
+Required: No
+
+Default: `false`
+
+Skip signing the patched APK entirely. The output APK will not be signed and cannot be installed directly on a device without signing it separately.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --unsigned your_app.apk
+```
+
+
+#### 20. `-t`, `--temporary-files-path`:
+Required: No
+
+Default: `morphe-temporary-files/` in the current working directory
+
+Path to a directory where Morphe stores temporary files during patching. This is also where downloaded .mpp files are cached when using URLs with `--patches`.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp -t /tmp/morphe-temp your_app.apk
+```
+
+
+#### 21. `--purge`:
+Required: No
+
+Default: `false`
+
+Delete the temporary files directory after patching is complete.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --purge your_app.apk
+```
+
+
+#### 22. `--custom-aapt2-binary`:
+Required: No
+
+Default: -
+
+> [!WARNING]
+> **Deprecated.** apktool is no longer used. This flag has no effect and will be removed in a future release. It's kept for backward compatibility with older scripts.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --custom-aapt2-binary /path/to/aapt2 your_app.apk
+```
+
+
+#### 23. `--force-apktool`:
+Required: No
+
+Default: `false`
+
+> [!WARNING]
+> **Deprecated.** apktool is no longer used. This flag has no effect and will be removed in a future release. It's kept for backward compatibility with older scripts.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --force-apktool your_app.apk
+```
+
+
+#### 24. `--striplibs`:
+Required: No
+
+Default: -
+
+Comma-separated list of native library architectures to **keep**. All other architectures will be stripped from the APK, reducing file size.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --striplibs arm64-v8a,armeabi-v7a your_app.apk
+```
+
+
+#### 25. `--bytecode-mode`:
+Required: No
+
+Default: `STRIP_FAST`
+
+Controls how Morphe processes the APK's bytecode (DEX) during patching. Trade-off between speed, output size, and safety.
+
+| Value | Description |
+|----------------|------------------------------------------------------------------------------------------------------------------------------|
+| `FULL` | Rebuilds and includes all bytecode. Largest output, slowest, safest - use if you hit runtime issues with the stripped modes. |
+| `STRIP_SAFE` | Strips bytecode that is provably unused, while keeping anything reachable via reflection or dynamic loading. |
+| `STRIP_FAST` | Default. Aggressively strips unused bytecode for the smallest, fastest build. May break apps that rely on reflection. |
+
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --bytecode-mode FULL your_app.apk
+```
+
+> [!TIP]
+> If a patched app crashes at startup or has odd missing-class errors, switch to `STRIP_SAFE` or `FULL` and see if it fixes things.
+
+
+#### 26. `--verify-with-sdk`:
+Required: No
+
+Default: - (verification is skipped)
+
+Verify the patched DEX and APK files using a local Android SDK after patching. Helpful for catching corrupt output before installing on a device. Pass a path to your SDK install directory, or pass the flag with no value to use `$ANDROID_HOME`.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --verify-with-sdk /path/to/android-sdk your_app.apk
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --verify-with-sdk your_app.apk
+```
+
+> [!NOTE]
+> If you don't pass a path and `ANDROID_HOME` isn't set, Morphe will error out with a hint to either set the env var or supply a path.
+
+
+#### 27. `--continue-on-error`:
+Required: No
+
+Default: `false`
+
+By default, patching stops on the first patch failure. This flag lets Morphe continue applying the remaining patches even if one fails.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --continue-on-error your_app.apk
+```
+
+
+#### 28. `--options-file`:
+Required: No
+
+Default: -
+
+Path to a JSON file that controls which patches are enabled/disabled and their option values. Generate one using the `options-create` subcommand.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --options-file options.json your_app.apk
+```
+
+> [!NOTE]
+> If the file you specify doesn't exist yet, Morphe will automatically generate one with default values at that path and use it for the current patch. This means you can skip `options-create` entirely - just pass a path to a non-existent file and Morphe will create it for you.
+
+> [!TIP]
+> The options file is great for repeatable patching. Generate it once (either with `options-create` or by letting `--options-file` auto-generate it), tweak it, and reuse it every time you patch.
+
+
+#### 29. `--options-update`:
+Required: No
+
+Default: `false`
+
+Automatically update the options JSON file after patching to reflect the current patches. Without this flag, the file is left unchanged. New patches get added, removed patches get cleaned up.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --options-file options.json --options-update your_app.apk
+```
+
+
+#### 30. `-r`, `--result-file`:
+Required: No
+
+Default: -
+
+Path to save a JSON file containing the patching result, including which patches succeeded, which failed, and any error details.
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp -r result.json your_app.apk
+```
+
+---
+
+
+Subcommand 2: list-patches
+
+Lists all available patches from the supplied MPP files. Useful for finding patch names, indices, compatible packages, and options before patching.
+```
+java -jar morphe-desktop-*-all.jar list-patches --patches patches.mpp [flag/s]
+```
+
+Here is a quick lookup for all the flags under this subcommand:
+
+| Flag | Description |
+|----------------------------------|--------------------------------------------------------|
+| `--patches` | Paths to .mpp files or GitHub repo URLs |
+| `--prerelease` | Fetch latest dev pre-release instead of stable release |
+| `-t`, `--temporary-files-path` | Path to store temporary files |
+| `--out` | Write patch list to a file instead of stdout |
+| `-d`, `--with-descriptions` | Show patch descriptions |
+| `-p`, `--with-packages` | Show compatible packages |
+| `-v`, `--with-versions` | Show compatible versions |
+| `-o`, `--with-options` | Show patch options |
+| `-u`, `--with-universal-patches` | Include patches compatible with any app |
+| `-i`, `--index` | Show patch index |
+| `-f`, `--filter-package-name` | Filter patches by package name |
+
+
+#### 1. `--patches`:
+Required: Yes
+
+Default: -
+
+One or more paths to .mpp patch files or GitHub repository URLs to list patches from. When a URL is provided, Morphe downloads the .mpp file and caches it for future runs.
+```
+java -jar morphe-desktop-*-all.jar list-patches --patches patches.mpp
+java -jar morphe-desktop-*-all.jar list-patches --patches https://github.com/MorpheApp/morphe-patches
+```
+
+
+#### 2. `--prerelease`:
+Required: No
+
+Default: `false`
+
+When using a GitHub repo URL with `--patches`, fetch the latest dev pre-release instead of the latest stable release.
+```
+java -jar morphe-desktop-*-all.jar list-patches --patches https://github.com/MorpheApp/morphe-patches --prerelease
+```
+
+
+#### 3. `-t`, `--temporary-files-path`:
+Required: No
+
+Default: `morphe-temporary-files/` in the current working directory
+
+Path to a directory where Morphe stores temporary files, including cached .mpp downloads when using URLs with `--patches`.
+```
+java -jar morphe-desktop-*-all.jar list-patches --patches https://github.com/MorpheApp/morphe-patches -t /tmp/morphe-temp
+```
+
+
+#### 4. `--out`:
+Required: No
+
+Default: -
+
+Write the patch list to a file instead of printing to stdout. Useful in environments where `>` redirection is not available.
+```
+java -jar morphe-desktop-*-all.jar list-patches --patches patches.mpp --out patches-list.txt
+```
+
+
+#### 5. `-d`, `--with-descriptions`:
+Required: No
+
+Default: `true`
+
+Show the description of each patch. Enabled by default - use `--with-descriptions=false` to hide them.
+```
+java -jar morphe-desktop-*-all.jar list-patches --patches patches.mpp --with-descriptions=false
+```
+
+
+#### 6. `-p`, `--with-packages`:
+Required: No
+
+Default: `false`
+
+Show the packages each patch is compatible with.
+```
+java -jar morphe-desktop-*-all.jar list-patches --patches patches.mpp --with-packages
+```
+
+
+#### 7. `-v`, `--with-versions`:
+Required: No
+
+Default: `false`
+
+Show the compatible app versions for each patch. Requires `--with-packages` to be useful.
+```
+java -jar morphe-desktop-*-all.jar list-patches --patches patches.mpp --with-packages --with-versions
+```
+
+
+#### 8. `-o`, `--with-options`:
+Required: No
+
+Default: `false`
+
+Show the configurable options for each patch, including their keys, types, default values, and possible values.
+```
+java -jar morphe-desktop-*-all.jar list-patches --patches patches.mpp --with-options
+```
+
+
+#### 9. `-u`, `--with-universal-patches`:
+Required: No
+
+Default: `true`
+
+Include patches that are compatible with any app (universal patches). Use `--with-universal-patches=false` to only show patches targeting specific packages.
+```
+java -jar morphe-desktop-*-all.jar list-patches --patches patches.mpp --with-universal-patches=false
+```
+
+
+#### 10. `-i`, `--index`:
+Required: No
+
+Default: `true`
+
+Show the index of each patch. The index can be used with `--ei` and `--di` in the `patch` subcommand.
+```
+java -jar morphe-desktop-*-all.jar list-patches --patches patches.mpp
+```
+
+
+#### 11. `-f`, `--filter-package-name`:
+Required: No
+
+Default: -
+
+Only show patches that are compatible with the specified package name.
+```
+java -jar morphe-desktop-*-all.jar list-patches --patches patches.mpp --filter-package-name com.google.android.youtube
+```
+
+
+---
+
+Subcommand 3: list-versions
+
+
+Lists the most common compatible app versions for the patches in the supplied MPP files. Useful for knowing which APK version to download before patching.
+```
+java -jar morphe-desktop-*-all.jar list-versions --patches patches.mpp [flag/s]
+```
+
+Here is a quick lookup for all the flags under this subcommand:
+
+| Flag | Description |
+|--------------------------------|--------------------------------------------------------|
+| `--patches` | Paths to .mpp files or GitHub repo URLs |
+| `--prerelease` | Fetch latest dev pre-release instead of stable release |
+| `-t`, `--temporary-files-path` | Path to store temporary files |
+| `-f`, `--filter-package-names` | Filter by package names |
+| `-u`, `--count-unused-patches` | Include unused patches in the version count |
+
+
+#### 1. `--patches`:
+Required: Yes
+
+Default: -
+
+One or more paths to .mpp patch files or GitHub repository URLs. When a URL is provided, Morphe downloads the .mpp file and caches it for future runs.
+```
+java -jar morphe-desktop-*-all.jar list-versions --patches patches.mpp
+java -jar morphe-desktop-*-all.jar list-versions --patches https://github.com/MorpheApp/morphe-patches
+```
+
+
+#### 2. `--prerelease`:
+Required: No
+
+Default: `false`
+
+When using a GitHub repo URL with `--patches`, fetch the latest dev pre-release instead of the latest stable release.
+```
+java -jar morphe-desktop-*-all.jar list-versions --patches https://github.com/MorpheApp/morphe-patches --prerelease
+```
+
+
+#### 3. `-t`, `--temporary-files-path`:
+Required: No
+
+Default: `morphe-temporary-files/` in the current working directory
+
+Path to a directory where Morphe stores temporary files, including cached .mpp downloads when using URLs with `--patches`.
+```
+java -jar morphe-desktop-*-all.jar list-versions --patches https://github.com/MorpheApp/morphe-patches -t /tmp/morphe-temp
+```
+
+
+#### 4. `-f`, `--filter-package-names`:
+Required: No
+
+Default: -
+
+Only show versions for the specified package names. Can be used to check versions for a specific app.
+```
+java -jar morphe-desktop-*-all.jar list-versions --patches patches.mpp -f com.google.android.youtube
+```
+
+
+#### 5. `-u`, `--count-unused-patches`:
+Required: No
+
+Default: `false`
+
+Include patches that are not enabled by default when calculating the most common compatible versions. By default, only patches that are enabled are counted.
+```
+java -jar morphe-desktop-*-all.jar list-versions --patches patches.mpp --count-unused-patches
+```
+
+---
+
+
+Subcommand 4: options-create
+
+Creates or updates an options JSON file for controlling which patches are enabled/disabled and their option values. The generated file can be passed to the `patch` subcommand with `--options-file`.
+```
+java -jar morphe-desktop-*-all.jar options-create [flag/s]
+```
+
+Here is a quick lookup for all the flags under this subcommand:
+
+| Flag | Description |
+|--------------------------------|--------------------------------------------------------|
+| `-p`, `--patches` | Paths to .mpp files or GitHub repo URLs |
+| `--prerelease` | Fetch latest dev pre-release instead of stable release |
+| `-t`, `--temporary-files-path` | Path to store temporary files |
+| `-o`, `--out` | Path to the output JSON file |
+| `-f`, `--filter-package-name` | Filter patches by package name |
+
+
+#### 1. `-p`, `--patches`:
+Required: Yes
+
+Default: -
+
+One or more paths to .mpp patch files or GitHub repository URLs to generate options from. When a URL is provided, Morphe downloads the .mpp file and caches it for future runs.
+```
+java -jar morphe-desktop-*-all.jar options-create -p patches.mpp -o options.json
+java -jar morphe-desktop-*-all.jar options-create -p https://github.com/MorpheApp/morphe-patches -o options.json
+```
+
+
+#### 2. `--prerelease`:
+Required: No
+
+Default: `false`
+
+When using a GitHub repo URL with `--patches`, fetch the latest dev pre-release instead of the latest stable release.
+```
+java -jar morphe-desktop-*-all.jar options-create -p https://github.com/MorpheApp/morphe-patches --prerelease -o options.json
+```
+
+
+#### 3. `-t`, `--temporary-files-path`:
+Required: No
+
+Default: `morphe-temporary-files/` in the current working directory
+
+Path to a directory where Morphe stores temporary files, including cached .mpp downloads when using URLs with `--patches`.
+```
+java -jar morphe-desktop-*-all.jar options-create -p https://github.com/MorpheApp/morphe-patches -t /tmp/morphe-temp -o options.json
+```
+
+
+#### 4. `-o`, `--out`:
+Required: Yes
+
+Default: -
+
+Path to the output JSON file. If the file already exists, Morphe will merge the current patches into it - preserving your existing settings, adding new patches, and removing patches that no longer exist.
+```
+java -jar morphe-desktop-*-all.jar options-create -p patches.mpp -o options.json
+```
+
+> [!TIP]
+> Run this command again after updating your .mpp file to keep your options file in sync. Existing settings are preserved.
+
+
+#### 5. `-f`, `--filter-package-name`:
+Required: No
+
+Default: -
+
+Only include patches compatible with the specified package name in the generated options file.
+```
+java -jar morphe-desktop-*-all.jar options-create -p patches.mpp -o options.json -f com.google.android.youtube
+```
+
+
+#### Options JSON Workflow
+
+The options JSON file lets you save your patch preferences and reuse them across multiple patching sessions. Here's the typical workflow:
+
+**Step 1: Generate the options file**
+
+Use `options-create` to generate a JSON file with all available patches and their default settings:
+```
+java -jar morphe-desktop-*-all.jar options-create -p patches.mpp -o options.json
+```
+
+**Step 2: Edit the file**
+
+Open `options.json` in any text editor. You can enable/disable patches and set option values. The file contains a list of patch bundles, each with patch entries that look like:
+```json
+{
+ "patchName": {
+ "enabled": true,
+ "options": {
+ "optionKey": "optionValue"
+ }
+ }
+}
+```
+
+Set `"enabled": false` to disable a patch, or change option values as needed.
+
+**Step 3: Patch using the options file**
+
+Pass your customized options file to the `patch` command:
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp --options-file options.json your_app.apk
+```
+
+**Step 4: Keep the file in sync (optional)**
+
+When you update your .mpp file to a newer version, patches may be added or removed. You have two ways to sync:
+
+- Re-run `options-create` - this merges new patches in while preserving your existing settings:
+ ```
+ java -jar morphe-desktop-*-all.jar options-create -p patches.mpp -o options.json
+ ```
+
+- Use `--options-update` during patching - this auto-updates the file after patching:
+ ```
+ java -jar morphe-desktop-*-all.jar patch -p patches.mpp --options-file options.json --options-update your_app.apk
+ ```
+
+> [!NOTE]
+> CLI flags (`-e`, `-d`, `--ei`, `--di`, `-O`) always take precedence over the options file. If you enable a patch via CLI that the options file disables, the CLI wins. Morphe will log when this happens.
+
+> [!TIP]
+> You can also skip `options-create` entirely. If you pass `--options-file` with a path that doesn't exist yet, Morphe will auto-generate the file with defaults for you.
+
+---
+
+
+Subcommand 5: utility
+
+Parent command for utility operations like manually installing or uninstalling apps via ADB. Has two sub-subcommands: `install` and `uninstall`.
+
+
+#### `utility install`
+
+Manually install an APK file to one or more ADB-connected devices.
+```
+java -jar morphe-desktop-*-all.jar utility install [flag/s] [device-serial...]
+```
+
+| Flag | Description |
+|--------------------|-------------------------------------------------------------|
+| `-a`, `--apk` | APK file to install |
+| `-m`, `--mount` | Mount over an existing app (requires package name and root) |
+| *(positional arg)* | ADB device serial(s) |
+
+
+##### 1. `-a`, `--apk`:
+Required: Yes
+
+Default: -
+
+Path to the APK file you want to install.
+```
+java -jar morphe-desktop-*-all.jar utility install -a patched_app.apk
+```
+
+
+##### 2. `-m`, `--mount`:
+Required: No
+
+Default: -
+
+Mount the APK on top of an existing app instead of a regular install. Pass the package name of the app to mount over. Requires root access.
+```
+java -jar morphe-desktop-*-all.jar utility install -a patched_app.apk -m com.google.android.youtube
+```
+
+
+##### 3. Positional argument (device serials):
+Required: No
+
+Default: First connected device
+
+One or more ADB device serials to install to. If not provided, installs to the first connected device.
+```
+java -jar morphe-desktop-*-all.jar utility install -a patched_app.apk SERIAL1 SERIAL2
+```
+
+---
+
+
+#### `utility uninstall`
+
+Manually uninstall a patched app from one or more ADB-connected devices.
+```
+java -jar morphe-desktop-*-all.jar utility uninstall [flag/s] [device-serial...]
+```
+
+| Flag | Description |
+|------------------------|--------------------------------------|
+| `-p`, `--package-name` | Package name of the app to uninstall |
+| `-u`, `--unmount` | Unmount instead of uninstall |
+| *(positional arg)* | ADB device serial(s) |
+
+
+##### 1. `-p`, `--package-name`:
+Required: Yes
+
+Default: -
+
+The package name of the app to uninstall.
+```
+java -jar morphe-desktop-*-all.jar utility uninstall -p com.google.android.youtube
+```
+
+
+##### 2. `-u`, `--unmount`:
+Required: No
+
+Default: `false`
+
+If the app was installed by mounting (using `--mount`), use this flag to unmount it instead of a regular uninstall.
+```
+java -jar morphe-desktop-*-all.jar utility uninstall -p com.google.android.youtube --unmount
+```
+
+
+##### 3. Positional argument (device serials):
+Required: No
+
+Default: First connected device
+
+One or more ADB device serials to uninstall from. If not provided, uninstalls from the first connected device.
+```
+java -jar morphe-desktop-*-all.jar utility uninstall -p com.google.android.youtube SERIAL1 SERIAL2
+```
+
+---
+
+
+### Value Types Reference
+
+When setting patch options with `-O` or in an options JSON file, values are typed. Using the wrong type can cause a patch to fail. Here are the supported types and how to format them:
+
+| Type | Example | Notes |
+|-----------------------|------------------------|------------------------------------|
+| String | `string` | Plain text |
+| Boolean | `true`, `false` | |
+| Integer | `123` | Whole numbers |
+| Double | `1.0` | Decimal numbers |
+| Float | `1.0f` | Decimal with `f` suffix |
+| Long | `1234567890`, `1L` | Large numbers, optional `L` suffix |
+| List | `[item1,item2,item3]` | Comma-separated, no spaces |
+| List (mixed types) | `[item1,123,true,1.0]` | Items are parsed by their type |
+| Empty list (any type) | `[]` | |
+| Typed empty list | `int[]` | Empty list of a specific type |
+| Nested empty list | `[int[]]` | |
+| List with null/empty | `[null,'','"]` | |
+
+**Escaping:**
+
+Quotes and commas inside strings need to be escaped with `\`:
+- `\"` - escaped double quote
+- `\'` - escaped single quote
+- `\,` - escaped comma (treated as part of the string, not a list separator)
+
+List items are parsed recursively, so escaping works inside lists too:
+
+| What you want | How to write it |
+|---------------------|-----------------------|
+| Integer as a string | `[\'123\']` |
+| Boolean as a string | `[\'true\']` |
+| List as a string | `[\'[item1,item2]\']` |
+| Null as a string | `[\'null\']` |
+
+**Example command:**
+```
+java -jar morphe-desktop-*-all.jar patch -p patches.mpp -e "Patch name" -OstringKey=\'1\' your_app.apk
+```
+
+This sets `stringKey` to the string `"1"` instead of the integer `1`.
+
+
+GUI
+
+Are you tired of memorizing flags? Is your terminal history just 47 variations of the same command,
+each one slightly more wrong than the last? Do you find yourself copy-pasting from the documentation above and STILL somehow misspelling
+basic version name? Then fear not, the GUI is for you!
+
+The GUI, also known as "" is the window you get when you double-click the jar file.
+"But hey... I don't need a GUI, I'm a power user." No you're not Kyle, you've been staring at the same
+error message for 20 minutes because you forgot a quote somewhere, and you have no idea where. So let's
+learn how to practically use it.
+
+First off, that entire CLI section you just scrolled through? All those flags, the keystore nonsense,
+the options JSON workflow? Forget it. All of it.
+
+In your [first run](../README.md#first-run), you would've encountered the non-expert mode of the GUI.
+This mode is for beginners and quick patches.
+
+Coming soon.
diff --git a/docs/images/app_selected.png b/docs/images/app_selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..23c29163f28ae3b75723319b3acb54546110a7c2
GIT binary patch
literal 364458
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
z
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%0Av?jy0Z7V4hK38(BQp#juh2!
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 |