Engine
Bundles
A bundle is the file you publish and users install: every patch you maintain, for as many apps as you like, plus the extension code those patches put into apps and a manifest naming the bundle. It is signed with your key; Reseam Manager and the CLI refuse a bundle whose signature does not match a key the user trusts. It has its own version, independent of the engine and of the apps it patches.
You develop it as a Gradle project with a fixed layout. The app.reseam.workspace plugin configures every module from the directories, so there is one build command and no build scripts to maintain.
Project layout
my-bundle/
manifest.toml
settings.gradle.kts
gradlew
gradle/
apps/<app>/
patch/src/main/kotlin/...
extensions/<name>/src/main/java/...
extensions/<name>/src/stubs/java/...
shared/<name>/src/main/java/...
apps/<app>/patch/: the Kotlin patches for one app. Compiles to<app>-patches.jar, which carries both JVM classes andclasses.dexso the engine loads it on the desktop JVM and on Android.apps/<app>/extensions/<name>/: Java compiled againstandroid.jarinto<app>-<name>.dex. See Shipping your own code.shared/<name>/: extensions used by more than one app. Compiles to<name>.dex.
Modules have no build script unless they declare dependencies:
dependencies {
compileOnly(project(":shared:settings-runtime"))
}
settings.gradle.kts
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
maven("https://git.reseam.app/api/packages/reseam/maven") {
mavenContent { includeGroup("app.reseam") }
}
}
(System.getenv("RESEAM_WORKSPACE") ?: providers.gradleProperty("reseam.workspace").orNull)
?.takeIf { it.isNotBlank() }
?.let { includeBuild(it) }
}
plugins {
id("app.reseam.workspace") version "0.5.0"
}
rootProject.name = "my-bundle"
The plugin version is the SDK version; every patch module gets the SDK dependency from it.
manifest.toml
[bundle]
name = "my-bundle"
author = "Your Name"
description = "One-line description"
format_version = 1
name: short identifier, lowercase, no spaces. Names the output file and appears inpatches.json.author,description: shown to users.format_version: currently1.engine: written byreseam bundle pack, never by hand. Bundles load on engines of the same major version, or the same minor while the major is 0.
Next: Your first patch.