Skip to content

建议:YSM Native/JNI 支持 Windows NT 6.0+ #440

Description

@YZ6K-062

建议:YSM Native/JNI 支持 Windows NT 6.0+

如题。

想提一个关于 Windows 老系统兼容性的建议:是否可以考虑让 YSM 的 Native/JNI 部分支持 Windows NT 6.0+,也就是最低从 Windows Vista / Server 2008 开始?

这里并不是要求支持 Windows XP、2000 之类的 NT 5.x 系统,而是希望至少能够覆盖 NT 6.0 / 6.1 这一代 Windows。

之所以想提这个 Issue,主要是因为我有一个一直比较困惑的问题:

JNI 开发都能把 Android 放行了,怎么就不愿意放 Windows 老系统?

现在 YSM 已经使用 C++ Native + JNI,而且 Android 端也已经针对 Native Library 的加载方式做了专门处理。既然项目本身已经需要维护不同平台的 Native 代码,那么 Windows 这边是否有可能提供一个面向 NT 6.0+ 的兼容构建?

我比较想了解,目前阻止 YSM 支持 Vista / Windows 7 的具体原因究竟是什么。

例如:

  • 是编译器或工具链本身不再支持 NT 6.0?
  • 是 MSVC Runtime / CRT 的最低系统要求?
  • 是调用了 Windows 10 才存在的 Win32 API?
  • 是 Native Library 依赖了较新的 Windows 功能?
  • 是 CPU 指令集要求?
  • 还是目前没有维护旧系统构建和测试环境的必要?

如果确实存在无法绕开的技术限制,也希望能够说明一下具体是哪一部分导致 NT 6.0 无法支持。

如果主要只是因为现代构建环境默认已经不再面向 Vista,那么是否可以考虑单独维护一个 Legacy Windows Build?

我个人觉得 NT 6.0+ 是一个还算合理的兼容目标

Vista / Server 2008 虽然已经非常老,但它们属于 NT 6.0 世代;Windows 7 / Server 2008 R2 则是 NT 6.1。相比 XP 的 NT 5.1,这已经是完全不同的一代 Windows 平台。

另外,据我了解,我也曾在 HMCL 启动器的游戏错误报告群里见到过类似的问题:有人询问 Windows 7 的兼容性时,得到的反馈似乎是连 Windows 7 都无法运行

当然,这一点只是我在群里的了解,如果实际情况并非如此,还请以 YSM 当前的实际最低系统要求为准。

如果目前确实已经连 Windows 7 都无法运行,那么我反而更想知道其中具体的技术原因。毕竟 Windows 7 已经属于 NT 6.1,而我这里提出的 NT 6.0+ 目标也只是希望至少覆盖 Vista / Server 2008 这一代系统。

另外,我自己目前主要是在虚拟机环境下测试这些老系统,所以这个 Issue 并不只是单纯为了“在虚拟机里玩 YSM”。

现实中仍然有不少用户由于硬件、驱动、设备厂商支持等原因无法升级到更新版本的 Windows。对他们来说,升级系统并不是“点一下 Windows Update”这么简单——有些设备是真的已经被硬件和驱动卡死在旧系统上。

所以我觉得,如果 Native/JNI 部分不存在必须依赖新 Windows API 或新系统 ABI 的硬性限制,那么提供一个 NT 6.0+ 的兼容构建还是挺有意义的。

当然,我也理解维护额外的 Native 构建会增加开发、打包和测试成本,因此这更像是一个兼容性建议,而不是要求项目必须长期维护一套老系统环境。

如果维护完整的 NT 6.0+ 构建确实成本太高,那么至少能否考虑:

  1. 说明目前 Native 部分最低支持的 Windows 版本;
  2. 说明不支持 Vista / Windows 7 的具体技术原因;
  3. 如果条件允许,提供一个 Legacy Windows Build;

最后还是想问一句:

Android 都已经有专门的 JNI/Native 兼容方案了,Windows 这边能不能也稍微给 NT 6.0+ 留一条路?

虽然现在已经是 2026 年了,但总还有一些老设备在认真工作。

老设备:我还能再战十年.jpg

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions