首页 > 解决方案 > 检测应用程序是否在 macOS 测试版上运行

问题描述

我希望能够以某种方式检测我的应用程序是否在 macOS 11 的 beta 版本上运行,因为我想告知用户一些已知的错误。我只想向 macOS 11 beta 用户显示这样的警报,这意味着既不是 macOS 10.15 用户也不是 macOS 11 最终版本的用户。我当然可以提交一个应用程序更新以在 macOS 11 接近完成时删除警报,但如果有一些可重复使用的东西我可以在多个应用程序和未来的 macOS beta 版本中使用,那就太好了。

约束:

我的想法是,也许可以使用某种嗅探。当 macOS 版本是 beta 版本时,可能有一些 API 会返回不同的结果。

标签: swiftmacoscocoabetamacos-big-sur

解决方案


我相信你运气不好。About This Mac使用PrivateFrameworks/Seeding.framework,这里是重要的反汇编:

/* @class SDBuildInfo */
+(char)currentBuildIsSeed {
    return 0x0;
}

所以这似乎是一个构建时编译器标志。不幸的是,框架中的 plist 不包含此标志。

私有 API 使用示例:kaloprominat/currentBuildIsSeed.py

对于疯狂的人:可以读取二进制文件并比较函数的程序集。我将从类转储代码开始,它会为您提供不同的胖二进制文件和函数偏移量。


推荐阅读