gpt4 book ai didi

xcode - 如何使 osx 应用程序向后兼容以及如何测试它们的困惑

转载 作者:行者123 更新时间:2023-12-03 16:01:52 28 4
gpt4 key购买 nike

阅读完苹果SDK指南后 https://developer.apple.com/library/mac/#documentation/developertools/conceptual/cross_development/Overview/overview.html

我仍然对如何使 Mac 应用程序向后兼容以及如何正确测试它们感到困惑

我有一个应用程序,我在 Mountain Lion 10.8 上运行并测试它,没有任何问题,但是我想让这个应用程序向后兼容,以便其他用户可以在 mac 10.6 - 10.7 计算机上运行它。

  1. 我有一个苹果开发者 ID,我可以下载 10.7 和 10.6 的旧版本,但问题是,我有一台 2011 款 MacBook Air,目前运行的是 10.8,这是我拥有的唯一一台苹果机器。我可以使用 vmware 或 parallels 测试 10.7 和 10.6 吗?

  2. 在我的项目设置中,我将目标部署设置为 10.6(因为我希望 10.6 个用户运行我的应用程序),但我应该将 SDK 设置为 10.8 还是 10.7?如果我将 SDK 设置为 10.8,但将目标部署设置为 10.6,如​​果我修复所有 xcode 警告,它会在 10.6 上成功运行吗?

  3. 从 SDK 下拉列表中,我只能设置为 10.8 或 10.7,但缺少 10.6,我该如何解决这个问题?

提前致谢

最佳答案

我在 10.8 盒子上开发并支持回 10.5。就在几个月前,我们放弃了 10.4 PPC 支持,我仍在清理一些 10.2 特定的代码。这可能有点咆哮,但我已经做旧版本很长时间了。我对此事有一些看法。

  • 无论 Apple 在文档中说什么,如果您想支持 10.6,请使用 10.6 SDK 进行构建。不要依赖分布目标。
    • 我与 Xcode 工程师进行了讨论,虽然他们坚持 Apple 的党派路线,即您应该始终使用最新的 SDK 进行构建,但他们也承认这样做通常是疯狂的。如果您针对 10.8 SDK 进行构建并将部署目标标记为 10.6,you will get no warnings for using methods that do not exist 10.6 日。您会发现自己使用了不存在的方法的唯一方法是,在 10.6 上运行时它可能会给您带来奇怪的错误。这太疯狂了。
    • 请记住,当您发送未知选择器时,OS X 不会崩溃。它只是中止当前的运行循环。因此,这些错误比 iOS 上的错误更难追踪,因为它会导致应用程序崩溃。
    • 当然,您可以 weak linking 。谈论危险......是的,有几次这是有用的,但如果你不正确地执行,编译器不会给你警告。如果我要像这样进行弱链接,我会采取另一种方式,链接到旧的 SDK 并将新函数的原型(prototype)复制到我的实现中。这样我就有了我认为要弱链接的每个函数的文档。
  • 下载旧的 SDK 并将它们符号链接(symbolic link)到您的 Xcode 发行版中。
    • 嫉妒地守护着他们。每次您升级 Xcode 时,Apple 都会尝试删除它们。制作您自己的副本并将它们粘贴到/SDKs 或远离 Xcode 的其他位置。我提供了一个名为 fix-xcode 的脚本自动管理符号链接(symbolic link)。我是否对 Apple 坚持删除我的旧 SDK 感到不满?是的,我是。
  • 您可以在虚拟机中合法运行10.6 Server。您可以在虚拟机中合法运行 10.7+ 桌面。这些是测试代码的好方法。
    • 或者您也可以像我一样,拥有一小堆旧 MacBook,每台都有两到三个分区,您可以随时重新启动。
    • 现在 10.7 来自 App Store,it's a little harder to make VMs 。我强烈建议您在安装后立即对您的镜像进行快照,并为其制作一个干净的备份副本。当您需要返回“原始”计算机时,您会希望能够不时克隆该镜像。
    • 养成在 SDK 发布后就将其保存起来的习惯。 10.8 总有一天会过时。您不妨现在就制作一份副本,这很容易。
  • 无论您是否支持单个点版本,保留单个点版本的升级包都会非常有帮助。当您遇到运行非当前版本的客户时,很高兴能够检查“不可重现”的错误实际上是否可以在其特定版本上轻松重现。这是否值得在很大程度上取决于您的产品和客户。当 10.4.11 在点发布期间对 WebKit 进行重大更改时,这对我来说是救星……
  • 投资一个小型 NAS 或一个大型外部 USB 驱动器(尽管我在广泛使用时遇到过这些失败的问题,所以我更喜欢 RAID)。你需要空间。您希望保留大量虚拟机和 SDK,有时甚至保留旧版本的 Xcode。

关于xcode - 如何使 osx 应用程序向后兼容以及如何测试它们的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15091105/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com