SlayTheAmethystModded

Introduction: A modded Slay the Spire experience on Android.
More: Author   ReportBugs   
Tags:

SlayTheAmethyst 图标

简体中文 | English

Slay the Amethyst

一个面向 模组版 Slay the Spire 的 Android 启动器项目,在移动端运行大部分桌面版模组

Downloads Quick Start Debug Docs

Android API 26+ Closed Issues Stars Runtime Java 8 Bridge ABI arm64-v8a CI GitHub Release Workflow

核心特性 • 快速开始 • 构建说明 • 文档入口 • 仓库结构 • 致谢

[!IMPORTANT] 本仓库不包含私有构建依赖。构建前请按下文在 build-deps/ 放置 desktop.jar 与 jre8-pojav.zip,不需要配置 Steam 路径或环境变量。

方向 说明
模组兼容性 目标是支持绝大多数模组加载,力求模组行为与桌面端一致。
兼容策略 启动器内置多种兼容策略。
运行时 运行 JavaSE 而不是 ART,避免因为实现不一致导致的兼容性问题。
移动端交互 针对触屏补充了控制适配与界面适配。

[!Note] 虽然尖塔采用了 LibGDX 编写,但是部分模组仍采用一些桌面特性进行编写,本项目旨在使用适配安卓的 JavaSE 与配套 Native 库来加载这些模组,从而最大限度还原模组的表现。

快速开始

1. 准备构建依赖

构建只读取仓库内的 build-deps/ 目录,不需要配置 Steam 路径或环境变量。必需文件:

文件 来源
build-deps/desktop.jar 从你自己的 Steam 安装复制 steamapps/common/SlayTheSpire/desktop-1.0.jar 并重命名为 desktop.jar
build-deps/jre8-pojav.zip https://github.com/ModinMobileSTS/SlayTheAmethystModdedDependence/releases/download/pojav-jre8/jre8-pojav.zip

两个文件都可以手动放入 build-deps/。若构建时发现缺失,ensureBuildDependencies 会自动从依赖包下载并解压补全(默认地址 build-deps.tar.gz,内含这两个文件):

https://github.com/ModinMobileSTS/SlayTheAmethystModdedDependence/releases/download/deps-20260305/build-deps.tar.gz

可用 -PbuildDeps.bundleUrl=<url> 覆盖下载地址;离线构建时请预先手动放入文件。

可选签名目录(放置后所有 checkout 的 debug 签名一致,release 无需环境变量):

  • build-deps/debug-signature/:覆盖 AGP 默认 debug keystore。
  • build-deps/release-signature/:release 签名。

两个目录结构相同,内含 keystore 文件与一个 signing.properties:

# build-deps/release-signature/signing.properties
storeFile=keystore.jks
storePassword=...
keyAlias=upload
keyPassword=...

storeFile 省略时默认 keystore.jks;keyPassword 省略时默认等于 storePassword。release 构建仍优先读取 RELEASE_STORE_FILE / RELEASE_STORE_PASSWORD / RELEASE_KEY_ALIAS / RELEASE_KEY_PASSWORD 环境变量及 release.* Gradle 属性,全部为空时才回退到 build-deps/release-signature/。

依赖下载来源:

[!NOTE] ModTheSpire.jar、BaseMod.jar、StSLib.jar 等核心模组 jar 由应用资源打包提供,不会在构建时从外部模组源动态解析。

资源包策略:slim APK 在需要时从固定的 GitHub/Gitee resources-v1.6 链接下载;full APK 可将同版本归档内置在 APK 中供离线首次安装。两种 APK 使用相同的本地资源仓库。只要 resourcePack.version 不变,应用升级会复用已安装的 generation,不会重新下载。资源包不随本仓库 CI 发版。

2. 检查构建环境

一键检查工具链、网络连通性与依赖是否就绪(类似 flutter doctor):

python3 scripts/build/main.py doctor

该命令会探测 Maven Central / Google Maven / Gradle Plugin Portal / foojay 以及依赖包下载地址的可达性;离线环境可用 --no-network 跳过网络检测。

3. 构建调试版 APK

.\gradlew.bat :app:assembleDebug

在 Linux/macOS 或 Git Bash 中,也可以直接打包并安装到已连接的 Android 设备:

./scripts/build-debug-install.sh

连接了多台设备时,传入目标设备序列号:

./scripts/build-debug-install.sh <设备序列号>

4. 构建签名发布版 APK

[!IMPORTANT] 建议使用发布自动化指南中的方法进行Release版本的构建,以避免签名不同的问题

推荐把签名放在 build-deps/release-signature/(见上文),然后直接构建:

./gradlew :app:assembleRelease

也可以改用标准 Android 签名环境变量(优先级高于签名目录):

$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 输出目录:

  • app/build/outputs/apk/debug/
  • app/build/outputs/apk/release/

构建说明

模块 职责
:app Android 启动器 UI、打包逻辑、运行时资源组装,以及 adb 调试任务
:boot-bridge 打包进运行时资源的 Java 启动桥接 jar
:patches:gdx-patch 构建期包含的桌面兼容补丁 jar

构建目标:

  • minSdk 26
  • targetSdk 33
  • compileSdk 36
  • Java / Kotlin 字节码目标:1.8

相关文档

基础调试指令

.\gradlew.bat :app:stsStart
.\gradlew.bat :app:stsStop
.\gradlew.bat :app:stsPullLogs

性能测试

发版前应该进行一轮性能测试,查看更改是否引入性能问题。

./gradlew :app:stsHarnessPerfBench

该任务将会自动启动 app,自动跑真实的运行场景,一并收集性能信息。

建议使用 -PdeviceSerial 和 -PharnessOutDir 指定设备和结论输出目录。

./gradlew :app:stsHarnessPerfBench -PdeviceSerial=10.126.126.1:5555 -PharnessOutDir=agent-tmp/perf-bench

完整参数、默认值、固定行为和输出文件见 perf-bench 参数参考。

GPU 诊断开销应使用固定战斗做关闭/开启配对测试;方法、指标定义和阈值限制见 GPU 性能诊断与配对基准。

市场网络连通性测试

加速链路连接的服务器可能存在不可靠的情况,返回行为未知,发版前应该手动测试市场的可用性。

STS_RUN_MARKET_NETWORK_ACCEPTANCE=true ./gradlew :app:marketNetworkAcceptanceTest

更多文档:

仓库结构

路径 用途
app/ 主 Android 应用与启动器实现
boot-bridge/ 启动桥接 jar 模块
patches/gdx-patch/ 运行时兼容补丁模块
build-deps/ 本地构建依赖包与运行时输入
docs/ 开发文档、多语言 README 与架构说明

致谢

本仓库复用了并改造了 Amethyst-Android / PojavLauncher 的部分原生与 Java 桥接实现。详细归属与许可证请见 NOTICE 和 THIRD_PARTY_LICENSES.md。

特别感谢:

  • AngelAuraMC/Amethyst-Android 提供了 Android JavaSE 启动器桥接方向上的重要工程基础和参考实现。
  • Alchyr/sts-ram-saver 为启动器内存优化提供了极大的指导,使得更多模组可以在启动器上使用。
  • bwwq/ModTheSpire 提供了本项目当前使用的 ModTheSpire 变体。
  • 所有为 Slay the Spire 模组生态、启动器工具链、问题排查和公开讨论做出贡献的开发者与社区成员。
Apps
About Me
GitHub: Trinea
Facebook: Dev Tools
AI Daily Digest