@@ -1,6 +1,16 @@
|
|||||||
# X Patches
|
# X Patches
|
||||||
|
|
||||||
Local patch bundle for X (Twitter).
|
Patch bundle for X (Twitter), maintained by
|
||||||
|
[Stan Ponomarev](https://git.krtss.de/StanPonomarev).
|
||||||
|
|
||||||
|
## Patch
|
||||||
|
|
||||||
|
### Disable outdated version screen
|
||||||
|
|
||||||
|
Prevents X from entering its client-shutdown state when the configured minimum
|
||||||
|
version is newer than the installed app. It also ignores shutdown state already
|
||||||
|
persisted by an unpatched installation, restoring app access without hiding only
|
||||||
|
the update UI.
|
||||||
|
|
||||||
## Target
|
## Target
|
||||||
|
|
||||||
@@ -9,38 +19,68 @@ Local patch bundle for X (Twitter).
|
|||||||
- Input type: APKM
|
- Input type: APKM
|
||||||
- Minimum Android API: 28
|
- Minimum Android API: 28
|
||||||
|
|
||||||
The current `No-op` patch intentionally makes no changes. It validates that the
|
## Prerequisites
|
||||||
bundle builds, loads, and applies to `twitter.apkm`.
|
|
||||||
|
|
||||||
## Build
|
- Java 21
|
||||||
|
- The target `twitter.apkm` in the repository root for integration testing
|
||||||
Java 21 and GitHub Packages credentials in `~/.gradle/gradle.properties` are
|
- GitHub Packages credentials in `~/.gradle/gradle.properties`:
|
||||||
required:
|
|
||||||
|
|
||||||
```properties
|
```properties
|
||||||
gpr.user = your-github-username
|
gpr.user = your-github-username
|
||||||
gpr.key = your-read-packages-token
|
gpr.key = your-read-packages-token
|
||||||
```
|
```
|
||||||
|
|
||||||
Build the bundle:
|
## Build
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
./gradlew buildAndroid
|
./gradlew :patches:buildAndroid
|
||||||
```
|
```
|
||||||
|
|
||||||
The output is `patches/build/libs/patches-1.0.0.mpp`.
|
The bundle is written to `patches/build/libs/patches-1.0.0.mpp`.
|
||||||
|
|
||||||
## Apply
|
## Integration test
|
||||||
|
|
||||||
Use the current Morphe Desktop CLI:
|
```shell
|
||||||
|
./gradlew :patches:integrationTest
|
||||||
|
```
|
||||||
|
|
||||||
|
The Kotlin integration test downloads the pinned Morphe Desktop release,
|
||||||
|
verifies its SHA-256 checksum, applies only this patch to `twitter.apkm`, and
|
||||||
|
checks the resulting APK and Morphe patching report. The verified Morphe JAR is
|
||||||
|
cached under `patches/build/verification/tools`.
|
||||||
|
|
||||||
|
## Apply manually
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
java -jar morphe-desktop-*-all.jar patch \
|
java -jar morphe-desktop-*-all.jar patch \
|
||||||
--patches patches/build/libs/patches-1.0.0.mpp \
|
--patches patches/build/libs/patches-1.0.0.mpp \
|
||||||
|
--exclusive \
|
||||||
|
--enable="Disable outdated version screen" \
|
||||||
--out twitter-patched.apk \
|
--out twitter-patched.apk \
|
||||||
twitter.apkm
|
twitter.apkm
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Add as a Morphe patch source
|
||||||
|
|
||||||
|
For a local source, open **Sources → + → Local** in Morphe and select the built
|
||||||
|
`.mpp` file.
|
||||||
|
|
||||||
|
After a release has populated `patches-bundle.json`, add the following address
|
||||||
|
under **Sources → + → Remote**:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://git.krtss.de/StanPonomarev/twitter-patch/raw/branch/main/patches-bundle.json
|
||||||
|
```
|
||||||
|
|
||||||
|
Remote sources update automatically from the release bundle referenced by that
|
||||||
|
metadata file.
|
||||||
|
|
||||||
|
## Project
|
||||||
|
|
||||||
|
- Repository: <https://git.krtss.de/StanPonomarev/twitter-patch>
|
||||||
|
- Author: Stan Ponomarev
|
||||||
|
- Contact: <contact@krtss.de>
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Licensed under the [GNU General Public License v3.0](LICENSE).
|
Licensed under the [GNU General Public License v3.0](LICENSE).
|
||||||
|
|||||||
Reference in New Issue
Block a user