- Rust 75.4%
- Kotlin 20.5%
- TypeScript 3%
- Java 0.3%
- JavaScript 0.3%
- Other 0.4%
| .cargo | ||
| .github | ||
| app-runtime | ||
| browser | ||
| build-support | ||
| crates | ||
| docs | ||
| gradle | ||
| gradle-plugin | ||
| LICENSES | ||
| patch-api | ||
| sdk | ||
| sdk-kotlin | ||
| tests/kotlin-runtime-bundle | ||
| vendor/boltffi_macros | ||
| xtask | ||
| .boltffi-version | ||
| .gitignore | ||
| AGENTS.md | ||
| build.gradle.kts | ||
| Cargo.lock | ||
| Cargo.toml | ||
| clippy.toml | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| justfile | ||
| LICENSE | ||
| NOTICE | ||
| README.md | ||
| REUSE.toml | ||
| rust-toolchain.toml | ||
| rustfmt.toml | ||
| settings.gradle.kts | ||
Reseam
Reseam applies community-built patches to Android apps. This repository is the engine behind it: the code that reads an app, runs patches on it, and signs the result. Reseam Manager, the reseam CLI, and the browser patcher on reseam.app all use it.
APK parsing, DEX editing, and signing are written in Rust. Patches are written in Kotlin. They run on the JVM on desktop, on Android's runtime on phones, and on CheerpJ in the browser.
Docs for patch authors and the CLI are at reseam.app/docs. Their sources are docs/ and crates/cli/docs/.
Layout
| Path | |
|---|---|
crates/bytes |
bounds-checked little-endian fields of binary formats |
crates/storage |
file-backed bytes and temporary storage |
crates/journal |
savepoints and undo records for state a patch run may take back |
crates/dex |
DEX parser, editor, and writer |
crates/hermes |
Hermes bytecode parser, editor, linker, and writer |
crates/apk |
APKs, split sets, APKM/XAPK, manifest, resources |
crates/sign |
APK Signature Scheme v2 signing |
crates/fixtures |
archives the workspace's tests build as input |
crates/model |
requests, results, events, and errors shared by every host |
crates/patcher |
bundles, patch planning and execution, the Kotlin bridge |
crates/cli |
the reseam command |
sdk/ |
the application SDK, its BoltFFI bindings (sdk/native), and its WASI build (sdk/browser) |
sdk-kotlin/ |
the reseam-sdk Kotlin package for Android and JVM apps |
patch-api/ |
the reseam-patch-sdk Kotlin API patches are written against |
gradle-plugin/ |
the Gradle plugin that builds bundles |
app-runtime/ |
the runtime patched apps carry: settings, their screens, and the bundle registry |
browser/ |
@reseam/browser, the engine for web pages |
xtask/ |
code generation, packaging, and releases (cargo xtask) |
Build
You need the Rust toolchain in rust-toolchain.toml, JDK 17 in JAVA_HOME, and the BoltFFI CLI at the version in .boltffi-version.
cargo xtask regen patch-api # generate the Kotlin bridge
cargo xtask runtime # build the patch runtime jar the engine embeds
cargo build --release -p reseam-cli
Building the Android and desktop SDK needs more toolchains; see sdk/README.md. The browser package has its own steps in browser/README.md.
Checks
cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace --no-fail-fast
./gradlew spotlessCheck checkKotlinAbi
How to write code here is in AGENTS.md. How the engine and the patch API talk to each other is in docs/internals/boltffi.md.
Release
cargo xtask release <version>
git push --follow-tags
This sets the version, commits, and tags v<version>. CI then publishes the CLI, both Kotlin packages, and @reseam/browser at that version.
License
AGPL-3.0-or-later, with additional terms under section 7 in NOTICE. Vendored code keeps its own license; see REUSE.toml.