简体中文 | English
An Android launcher for modded Slay the Spire, built to run most desktop mods on mobile.
Highlights • Quick Start • Build • Docs • Layout • Credits
> [!IMPORTANT] > This repository does **not** ship the Slay the Spire desktop jar. You must provide the game files from your own Steam installation before building. ## Highlights | Area | What this project focuses on | | --- | --- | | Mod compatibility | Targets real `ModTheSpire` / `BaseMod` / `StSLib` style stacks instead of a vanilla-only Android wrapper. | | Runtime | Uses JavaSE instead of ART to avoid compatibility problems caused by implementation differences. | | Mobile interaction | Adds touch-oriented control and UI adaptation for Android devices. | | Device coverage | Builds for `arm64-v8a` only. | > [!NOTE] > Although Slay the Spire is written with LibGDX, some mods still rely on desktop-specific behavior. This project uses an Android-adapted JavaSE runtime plus matching native libraries to load those mods and preserve their behavior as much as possible. ## Quick Start ### 1. Provide build-time dependencies Set `STEAM_PATH` as an environment variable, or set `steam.path` in `gradle.properties`, pointing to a Steam root or `steamapps` directory that contains Slay the Spire. Required files: - `${STEAM_PATH}/common/SlayTheSpire/desktop-1.0.jar` - `runtime-pack/jre8-pojav.zip` Dependency download sources: - Runtime pack: [ModinMobileSTS/SlayTheAmethystModdedDependence](https://github.com/ModinMobileSTS/SlayTheAmethystModdedDependence/releases/tag/pojav-jre8) - Native library market: [ModinMobileSTS/SlayTheAmethystResource](https://github.com/ModinMobileSTS/SlayTheAmethystResource) > [!NOTE] > Core mod jars such as `ModTheSpire.jar`, `BaseMod.jar`, and `StSLib.jar` are bundled from app assets. They are not fetched from external mod sources at build time. ### 2. Build a debug APK ```powershell .\gradlew.bat :app:assembleDebug ``` ### 3. Build a signed release APK > [!IMPORTANT] > For `Release` builds, prefer the workflow documented in the [Release Automation Guide](./release-automation/README.md) to avoid signing mismatches. Use the standard Android signing environment variables: ```powershell $env:RELEASE_STORE_FILE="C:\path\to\release-signing.jks" $env:RELEASE_STORE_PASSWORD="..." $env:RELEASE_KEY_ALIAS="..." $env:RELEASE_KEY_PASSWORD="..." .\gradlew.bat :app:assembleRelease ``` APK output: - `app/build/outputs/apk/debug/` - `app/build/outputs/apk/release/` ## Build from Source | Module | Responsibility | | --- | --- | | `:app` | Android launcher UI, packaging, runtime asset assembly, and adb-backed debug tasks | | `:boot-bridge` | Java boot bridge packaged into the runtime asset set | | `:patches:gdx-patch` | Desktop compatibility patch jar included during build | Platform targets: - `minSdk 26` - `targetSdk 33` - `compileSdk 36` - Java / Kotlin bytecode target: `1.8` ## Automation & Docs The repo already includes the pieces needed for day-to-day device work and CI releases. Debug and device automation: ```powershell .\gradlew.bat :app:stsStart .\gradlew.bat :app:stsStop .\gradlew.bat :app:stsPullLogs ``` Extra options: - `-PlaunchMode=mts_basemod` or `-PlaunchMode=vanilla` - `-PdeviceSerial=