我希望能够以某种方式检测我的应用程序是否在测试版 macOS 11 上运行,因为我想将一些已知错误告知用户。我只想向 macOS 11 beta 用户显示这样的警报,这意味着不是 macOS 10.15 用户,也不是 macOS 11 最终版本的用户。我当然可以在 macOS 11 即将完成时提交应用程序更新以删除警报,但如果有一些可重复使用的东西我可以在多个应用程序和 future 的 macOS beta 版本中使用,那就太好了。
约束:
- 该应用程序是沙盒。
- 该应用在 App Store 中,因此没有私有(private) API。
- 该应用没有网络授权,因此检测需要离线。
- 我不想捆绑已知 macOS 内部版本号的列表并进行比较。
我的想法是也许可以使用某种嗅探。可能有一些 API 在 macOS 版本为 beta 版本时返回不同的结果。
最佳答案
我相信你运气不好。 About This Mac 使用 PrivateFrameworks/Seeding.framework,这里是重要的反汇编:
/* @class SDBuildInfo */
+(char)currentBuildIsSeed {
return 0x0;
}
所以这似乎是一个构建时编译器标志。不幸的是,框架中的 plist 不包含此标志。
私有(private) API 使用示例:kaloprominat/currentBuildIsSeed.py
疯狂的人:可以读取二进制文件并比较函数的程序集。我将从类转储代码开始,它会为您提供不同的胖二进制文件和函数偏移量。
关于swift - 检测应用程序是否在 macOS beta 版本上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62744103/