Skip to content

ModinMobileSTS/SlayTheAmethystModded

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

529 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SlayTheAmethyst 图标

简体中文 | English

SlayTheAmethyst

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

Downloads Quick Start Debug Docs

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

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

Important

本仓库 不包含 Slay the Spire 的桌面版 jar。构建前请先准备你自己的 Steam 游戏文件。

核心特性

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

Note

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

快速开始

1. 准备构建依赖

设置环境变量 STEAM_PATH,或者在 gradle.properties 中设置 steam.path,其值应指向包含 Slay the Spire 的 Steam 根目录或 steamapps 目录。

必需文件:

  • ${STEAM_PATH}/common/SlayTheSpire/desktop-1.0.jar
  • runtime-pack/jre8-pojav.zip

依赖下载来源:

原生库市场: ModinMobileSTS/SlayTheAmethystResource

Note

ModTheSpire.jarBaseMod.jarStSLib.jar 等核心模组 jar 由应用资源打包提供,不会在构建时从外部模组源动态解析。

2. 构建调试版 APK

.\gradlew.bat :app:assembleDebug

3. 构建签名发布版 APK

Important

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

使用标准 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

文档入口

仓库已经内置了日常联机调试与 CI 发布所需的关键流程。

推荐使用 harness 入口执行可重复的设备调试流程,结果会写入 debug-artifacts/harness/.../result.json

python .\scripts\tools\main.py sts-harness -Command doctor
python .\scripts\tools\main.py sts-harness -Command smoke -LaunchMode mts_basemod -TimeoutSeconds 120
python .\scripts\tools\main.py sts-harness -Command smoke -Autoplay

也可以通过 Gradle 调用同一套 harness:

.\gradlew.bat :app:stsHarnessDoctor
.\gradlew.bat :app:stsHarnessSmoke
.\gradlew.bat :app:stsHarnessAutoplaySmoke

低层设备调试命令:

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

可选参数:

  • -PlaunchMode=mts_basemod-PlaunchMode=vanilla
  • -PdeviceSerial=<adb-serial>
  • -PlogsDir=<path>
  • -PharnessOutDir=<path>
  • -Pautoplay=true
  • -PpythonExecutable=<python-command>

smoke 会额外保存 harness 侧 logcat;如果游戏在写出 JVM 日志前崩溃,result.json 会报告 LOGCAT_CRASH 并在 artifacts.harnessLogcat 指向完整错误日志。Autoplay smoke 默认等待 300 秒,以便首次修补 desktop-1.0.jar;主进程修补失败会作为 FAIL 结果写入 result.json

更多文档:

仓库结构

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

致谢

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

特别感谢:

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