
确保 Evergine Android 应用与 Google Play 保持兼容

自 2025 年 8 月下旬起,Google Play 将对 Android 应用执行新要求:所有已发布应用必须面向 Android SDK 35。此政策确保通过 Google Play 分发的应用符合最新的 Android 安全性、性能和隐私标准。
您可以在 Google 官方文档 中查阅官方要求。
为确保 Evergine 开发者 能够继续无中断地发布其 Android 应用,我们已在模板和原生依赖中实施了关键更新。这些变更使基于 Evergine 构建的项目能够持续符合当前及未来的 Android 平台政策。
将 Evergine 模板更新至 .NET 9
满足这些新要求的第一步,是将 Evergine 的 Android 和 MAUI 模板更新为面向 .NET 9。
此升级使开发者能够正确编译和发布面向 Android SDK 35 的应用,这在 .NET 8 下并未完全支持。通过此变更,Evergine 项目受益于与最新 Android 工具链的增强兼容性,并在为 Play Store 准备构建时获得更流畅的开发者体验。
值得注意的是,并非所有基于 Android 的模板都需要此修改。诸如 Meta Quest 和 Pico XR 等平台,其应用直接部署到设备而不经过 Google Play,因此不受这些 SDK 目标规则的影响。它们的模板将继续像以前一样运行。
此外,Evergine 核心引擎 本身尚未迁移到 .NET 9。我们的策略是仅在运行时版本达到 LTS(长期支持) 状态时才进行迁移,以确保生产环境的长期稳定性和可预测性。因此,引擎的全面过渡将在 .NET 10 成为下一个 LTS 版本时进行。
这些模板更新代表了一个主动步骤,使 Evergine 用户能够为 Google 2025 年的截止日期提前做好准备,同时保持跨多个 Android 环境的兼容性和稳定性。
新限制:Android 16 中的 16 KB 页面大小
在执行这些更新时,我们发现了另一个将更早影响开发者的重要变更。从 2024 年 11 月 开始,Android 16 将要求所有原生库使用 16 KB 内存页面大小。
这一底层变更会影响二进制文件的构建和对齐方式,包含原生代码且不满足此要求的应用将 无法在较新设备上启动。
在测试过程中,出现了若干与 Evergine 内部及外部库所使用的原生依赖相关的警告。部分受影响的组件包括:
- so、libShaderConductorWrapper.so、libnaga_to_csharp.so(来自 Evergine.HLSLEverywhere)
- CognitiveServices.Speech.*.so(来自 Microsoft.CognitiveServices.Speech)
- so(来自 SkiaSharp.NativeAssets.Android)
- so(来自 Evergine.OpenAL)
- so(来自 Evergine.Bindings.Draco)
这些警告表明,部分原生二进制文件尚未使用 16 KB 页面对齐进行编译,这要求我们审查并更新相关包,以确保与 Android 16 的完全兼容性。
我们如何解决这些问题
为确保符合 Android 的新技术要求,并为 Evergine 开发者维持顺畅的部署体验,我们进行了多项更新和代码审查:
- 更新了 SkiaSharp 和 Microsoft Cognitive Services Speech 依赖项,使其版本包含正确对齐的原生二进制文件。
- 更新了 Evergine 中的 Bullet 物理绑定,以包含满足 16 KB 页面大小对齐要求的重新编译库。
- 对齐了 Android 项目中使用的 OpenAL 库,以遵循新的二进制布局规范。
- 从 Android 启动器中移除了对 Evergine.HLSLEverywhere 的依赖。此包在 Android 上从未需要,因为该平台上的着色器编译处理方式不同。HLSLEverywhere 仍用于 Windows 等桌面平台,在这些平台上着色器在运行时动态编译。
- 确保未来的原生库遵循对齐标准。 新集成的功能,例如 Evergine 的 KTX 纹理支持,在包含 Android 平台支持时,已从一开始就分发 16 KB 对齐的二进制文件,以保证兼容性。
这些措施不仅确保了与 Android 16 的兼容性,还减少了不必要的依赖,从而形成更简洁、更轻量且更易于维护的项目结构。
展望未来
通过这些更新,Evergine Android 项目现已完全符合 Google Play 的 SDK 35 目标政策,并为 Android 16 即将推出的内存页面要求做好了准备。
我们建议所有使用 Evergine 的开发者在向 Google Play 提交新应用版本之前更新其项目模板。这样做可以最大限度地减少潜在的兼容性问题,并确保其应用在未来 Android 设备上继续提供可靠的体验。
Evergine 始终致力于为工业 3D 和 XR 应用提供长期支持,确保今天构建的项目能够随着移动平台的演进而持续平稳运行。
