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

2024-01-20

阅读苹果SDK指南后https://developer.apple.com/library/mac/#documentation/developertools/conceptual/cross_development/Overview/overview.html 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 特定的代码。这可能有点咆哮,但我已经做旧版本很长时间了。我对此事有一些看法。

  • No matter what Apple says in their docs, if you want to support 10.6, then build with the 10.6 SDK. Do not rely on distribution target.
    • 我与 Xcode 工程师进行了讨论,虽然他们坚持 Apple 的党派路线,即您应该始终使用最新的 SDK 进行构建,但他们也承认这样做通常是疯狂的。如果您针对 10.8 SDK 进行构建并将部署目标标记为 10.6,使用不存在的方法不会收到任何警告 http://openradar.appspot.com/radar?id=185040610.6 日。您会发现自己使用了不存在的方法的唯一方法是,在 10.6 上运行时它可能会给您带来奇怪的错误。那太疯狂了。
    • 请记住,当您发送未知的选择器时,OS X 不会崩溃。它只是中止当前的运行循环。所以bug是均匀的harder然后在 iOS 上追踪导致应用程序崩溃的地方。
    • 当然,你可以做弱链接 https://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000-SW6。谈论危险......是的,有几次这是有用的,但如果你没有正确执行,编译器不会给你警告。如果我要像这样进行弱链接,我会采取另一种方式,链接到旧的 SDK 并将新函数的原型复制到我的实现中。这样我就有了我认为要弱链接的每个函数的文档。
  • Download the old SDKs and symlink them into your Xcode distribution.
    • 嫉妒地守护着他们。每次您升级 Xcode 时,Apple 都会尝试删除它们。制作您自己的副本并将它们粘贴到 /SDKs 或远离 Xcode 的其他位置。我提供了一个名为修复 xcode https://gist.github.com/rnapier/3370649自动管理符号链接。我是否对 Apple 坚持删除我的旧 SDK 感到不满?我是。
  • You can run 10.6 Server in a VM legally. You can run 10.7+ Desktop in a VM legally. These are good ways to test your code.
    • 或者你也可以像我一样,拥有一小堆旧 MacBook,每台都有两到三个分区,你可以随时重新启动。
    • 现在 10.7 来自 App Store,。我强烈建议您在安装后立即对您的映像进行快照,并为其制作一个干净的备份副本。当您需要返回“原始”计算机时,您会希望能够不时克隆该映像。
    • 养成在 SDK 发布后就将其保存起来的习惯。 10.8 总有一天会过时。你不妨现在就复印一份,这很容易。
  • 无论您是否支持单个点版本,保留单个点版本的升级包都会非常有帮助。当您遇到运行非当前版本的客户时,很高兴能够检查“不可重现”的错误实际上是否可以在其特定版本上轻松重现。这是否值得在很大程度上取决于您的产品和客户。当 10.4.11 在点发布期间对 WebKit 进行重大更改时,这对我来说是救星……
  • 投资一个小型 NAS 或一个大型外部 USB 驱动器(尽管我在广泛使用时遇到过这些故障的问题,所以我更喜欢 RAID)。你需要空间。您希望保留大量 VM 和 SDK,有时甚至保留旧版本的 Xcode。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 osx 应用程序向后兼容以及如何测试它们的困惑 的相关文章

  • Xcode 11 beta swift ui 预览未显示

    只是使用 Swift UI 基本应用程序 即使我处于画布模式 预览画布也不会显示 应用程序运行 我有这个小片段 我错过了什么 if DEBUG struct ContentView Previews PreviewProvider stat
  • 如何清理 Xcode 5 中的构建文件夹?

    Xcode 5 中 清理构建文件夹 的快捷方式似乎消失了 Command Option Shift K 不再起作用 有人找到新的快捷方式了吗 从 Xcode 7 开始 此功能又回来了 按Command Option Shift K 或者从菜
  • 外观代理 - iOS 5 的 setShadowImage 替代品?

    您好 我正在使用此代码来设置导航栏的阴影图像 if self navigationController navigationBar respondsToSelector selector shadowImage UINavigationBa
  • cocos2d中获取CCSprite的绝对位置

    在我的游戏中 我有一个CCSprite绕另一个轨道运行CCSprite 很像电子绕原子核运行 我将电子作为原子核的子元素 以使动画更加简单 我所要做的就是旋转原子核 电子就会很好地跟随 然而 我的问题来自于想要让轨道动画看起来更时髦一点 通
  • NSCF 数组越界?

    我有一个相当简单的应用程序 使用 Core Data 和几个数组控制器 在 IB 中 除了 xcdatamodel 文件之外 没有它们的代码文件 当我运行应用程序时 我在日志中收到以下错误 应用程序仍然运行 但在转到 文件 gt 新文档 之
  • 如何向选项卡栏控制器添加“入口点箭头”?

    In Xcode 6 2 beta I am able to make some view controllers such as View Controller or Navigation view controller the entr
  • 保留“自我”的坏做法?

    我有一个简单的疑问 希望有人能解答 保留自我是不好的做法吗 我有一个想要创建的服务器请求对象 我希望能够通过以下方式使用它 ARequest request ARequest request someParam request delega
  • xcode 9 中的 Facebook 登录按钮终止

    我正在使用 Xcode 9 并将编译器设置为 Swift 3 2 我使用 Cocoapods 安装了 Facebook Login 一切都编译没有任何错误 但每当我在模拟器中运行它时 我单击登录按钮 它就会崩溃 控制台中仅打印以下内容 li
  • 无法启动“”无法获取进程 的任务?

    使用 Xcode 4 5 2 并为 iOS4 或更高版本构建时 在为我的设备 4s 上的 iOS 6 0 1 构建时收到此消息 我关闭该对话框 然后在我的设备上重新启动该应用程序 该应用程序似乎可以正常工作 我是 iOS 开发新手 所以如果
  • 在 Grand Central Dispatch 中使用dispatch_sync

    任何人都可以用非常清晰的用例解释其目的是什么dispatch sync in GCD是为了 我不明白在哪里以及为什么我必须使用它 Thanks 当您想要执行一个块并等待结果时可以使用它 其中一个示例是使用调度队列而不是锁进行同步的模式 例如
  • 如何显示从 xib 加载的工作表? (MacOSx)

    我有一个 xib 文件 其中只有一个 NSPanel 我试图将此面板显示为模式表 带有beginSheet modalForWindow modalDelegate didEndSelector contextInfo 该 xib 文件的所
  • 未找到 ios 的 React 本机基本标头

    在 iOS 链接阶段 我开始看到我的 React Native 项目出现错误 反应本机版本 0 41 2 0 40 0 39 一切正常 我编辑了 Android 版本 React Native 代码没有改变 当这种链接错误开始出现并带有标题
  • 使用 Xcode 3.2 进行 PyObjC 开发

    Xcode 3 2 删除了脚本语言 Ruby Python 等 的默认模板 如何找到这些模板以在 Xcode 3 2 中使用 我是否需要向 Xcode 添加任何其他内容来支持使用和 构建 PyObjC 程序 此外 考虑到我已经是 Pytho
  • 将 uiview 转换为 .png 图像

    我正在 iphone 上工作 我采用 UIView 的子类 并在绘制矩形方法中进行一些设计 我想将此视图转换为 png 格式 提前致谢 UIGraphicsBeginImageContext myView frame size myView
  • 在 Interface Builder 中启用/禁用 NSLayoutConstraints

    NSLayoutConstraint in iOS 8 0 has a BOOL属性称为active这使得动态禁用 启用所述布局约束变得容易 要为视图控制器创建第二个布局集 然后我可以以编程方式启用 禁用它 通过IBOutletCollec
  • 将字符串编码为 HTML 字符串 Swift 3

    如何快速编码字符串以删除所有特殊字符并将其替换为其匹配的 html 编号 假设我有以下字符串 var mystring This is my String That s it 然后用它的html编号替换特殊字符 38 39 gt 62 但我
  • 不区分大小写的 NSString 比较

    使用此代码我可以比较字符串值 elementName isEqualToString Response 但这是区分大小写的 有没有办法比较字符串而不区分大小写 有一个caseInsensitiveCompare 方法上NSString 你为
  • 如何在iPhone sdk静音模式下播放声音文件?

    如何在iPhone sdk静音模式下播放声音文件 我正在尝试以静音模式播放声音文件 但结果为零 我试过这段代码 SystemSoundID soundID AudioServicesCreateSystemSoundID CFURLRef
  • 如何阻止 Xamarin 在启用位码的情况下构建我的应用程序?

    在我的 iOS 版本的配置中 没有禁用位码的选项 在 Xcode 中可以设置 ENABLE BITCODE NO 我需要这个 因为我的链接框架不是用位码构建的 而且现在苹果不再允许半位码编译的应用程序 In your csproj对于您的
  • 归档时出现“没有此类模块”错误

    我的 Swift 4 应用程序在所有模拟器上重建并成功运行 除了Generic iOS Device 如果我尝试将其存档或重建Generic iOS Device 我得到一个No such module与我的 Pod 框架之一相关的错误 我

随机推荐

  • 使用 CUPS 进行 Zebra 打印,不打印 ZPL 或 EPL

    我有一台 Zebra GK420d 通过 CUPS 连接到 OS X 但是 当我向其发送以 ZPL 或 EPL 编写的文件时 它们仅以纯文本形式打印 我需要更改打印机模式吗 与其他人所说的相反 您不需要专门添加原始队列 相反 您可以使用以下
  • 理解 SwiftUI 中的 @Binding

    我观看了一些关于数据绑定的WWDC视频和Apple文档 根据我目前的理解 State作为属性委托将提供视图和带注释的属性之间的绑定连接 例如 State var myText String var body some View VStack
  • PyGame 使 Linux 陷入困境?

    当我运行 pygame 代码时 它会使系统陷入困境 PyGame 变得无响应 并且它使 Ubuntu 的速度大大减慢 以至于我不得不强制关闭两次 我在这里发布了一个非常相似的问题 为什么我的基本 PyGame 模块这么慢 https sta
  • 如何内嵌文本旋转 90 度

    如何在不使用样式表的情况下将文本旋转 90 度 我已将以下说明放置在页面的标题区域中 然后我在相关段落周围放置了以下内容 div p My paragraph p div 但它不起作用 因此我的问题 这是一个小的视觉示例 rotate te
  • 谷歌地图不显示

    我需要在我的 php 页面地图上实现 我有容器 div div 它位于其他 div 内 我将这段代码放入其中标签 但根本不显示 有谁能够帮助我
  • 如何将表转换为 Spark Dataframe

    在 Spark SQL 中 可以使用以下命令将数据帧作为表进行查询 sqlContext registerDataFrameAsTable df mytable 假设我有的是mytable 我如何获取或访问它作为 DataFrame 最干净
  • 如何在 Swift 中规范化 UIImage 的像素值?

    我们正在尝试使UIImage以便它可以正确传递到 CoreML 模型中 我们从每个像素检索 RGB 值的方法是首先初始化一个 CGFloat 数组称为rawData每个像素的值 这样就有一个红色 绿色 蓝色和 alpha 值的位置 在bit
  • ANSI 颜色在带有 PowerShell 的 VSCode 集成终端中不起作用

    我正在为我的 python 项目使用 Visual Studio Code 并且我也在使用片状天堂 https flakeheaven readthedocs io en latest 未维护的分叉弗莱克地狱 https github co
  • 将 python BOTO 与 AWS SQS 结合使用,返回无意义的字符

    因此 我使用 python 和 BOTO 来访问我的 AWS SQS 我在 SQS 中有一些消息 我可以从 AWS 仪表板看到这些消息 然而 当我尝试通过 python 获取这些消息时 出现的字符只是乱码 知道这是怎么回事吗 conn bo
  • 在中继器内更新图像的 ImageUrl

    我希望有一个人可以帮助我 恐怕这是一个相当新手的问题 我在中继器中有一个图像 我想根据传递给它的参数更改其 IMAGEURL
  • 使用 Clipper 库 (c++) 进行线和多边形裁剪返回空路径

    我正在尝试使用 Clipper 库按线分割多边形 执行裁剪后 返回空路径 有人可以建议正确的方法来做同样的事情吗 Paths clip 2 soln clip 0 lt lt IntPoint 264 210 lt lt IntPoint
  • 在 Python 中下载 Sharepoint Excel 文件

    我正在尝试使用 Python 脚本从 SharePoint 存储库下载 Excel 文件 我正在使用 Office365 Rest Python Client 如示例中所定义https github com vgrem Office365
  • 在 Vista 上捕获“程序停止运行”

    在 Vista 上 我遇到了应用程序崩溃处理程序的问题 基本上 如果发生 SEH 无法捕获的意外情况 我会收到此弹出窗口 其中包含 应用程序停止工作 blablabla 关闭程序 调试程序 也就是说 在我使用系统控制面板 启用错误报告后 您
  • 如何获取图像的亮度梯度

    我正在努力通过图像亮度检查来理解图像 我尝试通过下面的代码找到图像的亮度 def brightness im file im Image open im file stat ImageStat Stat im r g b stat rms
  • 使闪亮的 dateInput 返回 NULL 或空字符

    我正在开发一个闪亮的应用程序 它允许用户从input插入 SQL Server 数据库 我想要做的一件事是删除当前存在的日期 为此 我需要一种方法来通过NULL NA or 某物我可以用它来将数据库中的值设置为 NULL dateInput
  • 查找具有属性支持的 JavaScript 库,用于在 JavaScript 中序列化和反序列化对象

    考虑 JavaScript 中的以下类 Tools UserBase Tools Class define Tools UserBase Tools EntityBase UserId type System Int32 key true
  • Laravel 在共享主机上运行 artisan 命令

    我在以下网站上托管了一个网站http 000webhostapp com http 000webhostapp com一段时间以来它工作正常 但它向我显示了这个错误 生产 错误 未指定应用程序加密密钥 我发现我必须运行这个 artisan
  • 如何使用 Terraform 和 AWS API Gateway 创建 API 代理

    我正在尝试使用 Terraform 在 AWS 上的 API Gateway 中建立一个简单的 API 代理 基本上 我想包装 root 并将请求代理回另一个端点 这可能是最简单的设置 但我似乎无法让它在 Terraform 中工作 您将在
  • 在 html 中添加图像

    我似乎无法在 html 中添加图像 我正在使用 ASP net MVC 3 我的图像名为 KeyLargoPic 位于闪存驱动器上的文件夹 X Project Project Photos Key Largo 中 它看起来是 JPEG 代码
  • 如何使 osx 应用程序向后兼容以及如何测试它们的困惑

    阅读苹果SDK指南后https developer apple com library mac documentation developertools conceptual cross development Overview overv