更多好文,请关注公众号 知识小集 (ID: zsxjtip)
macOS Catalina 发布
苹果于当地时间 7 号正式发布了 macOS Catalina。新系统有以下几个大的改动:
• 将 iTunes 拆分成三个 App: Apple Music、Apple Podcasts 和 Apple TV;
• 通过 Catalyst 将 iPad 应用移植到 macOS;
• 通过 Sidecar 将 iPad 作为 Mac 的扩展屏幕;
• 支持 Apple Arcade,将 Mac 变成一台游戏机;
• 增强安全和隐私功能;
• 语音控制;
• Screen Time;
• Find My;
• ......
macOS Catalina 支持以下机型:
• MacBook 2015+
• MacBook Air 2012+
• MacBook Pro 2012+
• Mac Mini 2012+
• iMac 2012+
• iMac Pro 2017+
• Mac Pro 2013+
在安装更新之前,还需要确保以下几点:
• 备份数据
• 有效的 Apple ID
• 20 G+ 可用存储空间
• 已安装的应用如果是 32 位的,更新系统后会失效;
另外部分用户在尝试升级时,发现版本号显示为 (null),再联想到 iOS 13 短期内连发三个版本,让人对新系统还是报些许怀疑。
macOS Catalina API 变更
如果你是一名 macOS 开发人员,不妨了解一下 macOS Catalina 中一些 API 的变更,以下是部分内容,详情可参考 release note 文档。
General
• 安装第三方内核扩展程序需要重新启动 Mac,然后才能加载它们。
弃用
• 针对 x86-64 体系结构简化了 macOS 框架。现在,执行 i386 代码的应用程序会失败,并显示
EBADARCH
错误代码。其余残存框架不起作用,仅出于兼容性目的而存在。
AirDrop
已知问题
• 当 VPN 在启用
includeAllNetworks
和
excludeLocalNetworks
选项的情况下连接时,AirDrop 不起作用。
解决方法:在使用 AirDrop 之前断开 VPN 的连接。
AppleEvents
• 为了增强安全性,针对远程系统上的应用程序的 AppleEvents 和 AppleScripts 必须以远程系统上的同一用户身份进行身份验证。 针对以不同用户身份运行的应用程序的 AppleEvent 会收到
procNotFound
错误。
要允许远程 AppleEvent 在任何用户会话中定位应用程序,请在服务器上的终端中运行以下命令:
defaults write /Library/Preferences/com.apple.AEServer RestrictAccessToUserSession -bool false
复制代码
然后在 System Preferences > Sharing 中禁用并重新启用 Remote Apple Events。
Audio
• 现在,可以在 AVAudioEngine 上启用语音处理模式。
• 可以使用新的 AVAudioNode 类型来包装用户定义的块,以实时发送或接收数据。
• 一种新方法可用于基于 AVAudioEngine 的应用程序,以检索附加到 AVAudioEngine 实例的所有节点的列表。
• AVAudioEnvironmentNode 中的新渲染模式会根据输出设备自动选择最佳的空间音频渲染算法。
• 新的 AVAudioSession 属性允许会话在使用音频输入时播放系统声音。
• 一个新属性 AVAudioSessionPromptStyle 可以根据系统中的其他音频活动,通知应用程序应播放的语音提示样式。
• 扩展了 AVAudioSessionRouteSharingPolicy 枚举,以允许应用程序指定路由共享策略,以便将其音频和视频路由到与 AirPlay 相同的位置。
• 音频单元扩展现在支持所有主机应用程序中都可用的用户预设。
弃用
• 不建议使用 OpenAL 框架,为了兼容起见,它仍然存在。过渡到 AVAudioEngine 以获取空间音频功能。
• 不推荐使用 AUGraph,而推荐使用 AVAudioEngine。
• 应用间音频已弃用。将音频单元用于此功能。
• 不建议使用 Carbon 组件的音频单元,并且在将来的版本中将删除支持。
• 旧版 Core Audio HAL 音频硬件插件不再受支持。将音频服务器插件用于音频驱动程序。
AVFoundation
• AVPlayer 类包含两个新属性,
qualifiedForHDRPlayback
和
AVPlayerEligibleForHDRPlaybackDidChangeNotification
,可以使用它们来确定 HDR 显示是否可用以及是否可以在当前设备上播放。
• AVFoundation 现在支持使用 HEVC 对具有 alpha 通道的视频进行编码。AVFoundation API 和网页中的 Safari 广泛支持以这种方式编码的视频。该格式的技术详细信息可以在 Interoperability Profile 规范中找到。
弃用
• macOS 10.15 中不再提供以前不推荐使用的 32 位 QuickTime 框架。
• 仍然存在依赖于 QuickTime 框架的 QTKit 符号,但这些类不起作用。
Core Image
•
filterWithImageURL:options:
和
filterWithImageData:options:
初始化器不再支持早于 6 的 RAW 解码器版本。仍然支持版本 6 和更高版本。
• 添加了新的 API,用于实例化和修改内置的 Core Image 过滤器。
• CICoreMLModel 过滤器得到增强,以支持输入或输出类型为 MLFeatureTypeMultiArray 的模型。
• Metal CIKernel 实例现在支持带有任意结构化数据的参数。
• Metal CIKernel 实例现在支持返回一组 2 x 2 像素。
• CIFormat 符号的整数值(例如kCIFormatARGB8)已更改为一组在平台之间一致的新值。以前的值仍受支持,以实现向后兼容。但是,应避免依赖于特定的数值。
EndpointSecurity
弃用
• 不建议使用
kauth
API。
iCloud
已知的问题
• 更新到 macOS Catalina 10.15 Beta 7 或更高版本后,iCloud Drive 可能会长时间同步。如果您发现任何丢失的文件,可以在主文件夹中的
Recovered Files
文件夹中找到它们。
• 即使关闭“优化存储”,iCloud Drive 可能也无法自动下载所有文件。
解决方法:单独下载文件。
• 在共享文件夹中创建新的Pages,Numbers或Keynote文档时,您可能会看到消息“无法连接到iCloud”。
解决方法:关闭并重新打开文档。
启动守护程序和代理
• 启动守护程序和启动代理引入了新的用户隐私保护。在启动的属性列表中指定对隐私敏感的文件和文件夹可能无法按预期工作,并阻止该服务运行。当前允许在隐私敏感位置使 Program 或 ProgramArguments 指向可执行文件,但在将来的版本中可能会受到限制。
为了遵守新的隐私保护,启动服务的资源必须存储在对隐私不敏感的位置。如有必要,该应用程序可以在其执行期间设置资源,而不必使用启动的属性列表键,从而可以使用 System Preferences > Security & Privacy > Privacy 来授予应用程序访问权限。
下列启动的属性列表键会受到影响:KeepAlive,PathState,QueueDirectories,Sockets,SockPathName,StandardErrorPath,StandardInPath,StandardOutPath和WatchPaths。
Localization
解决的问题
• 修复了某些语言可能会出现裁剪或对齐错误的问题。
• 修复了某些语言可能显示未本地化文本的问题。
Mac Catalyst
已知的问题
• 编译 Mac Catalyst 应用程序的 asset 目录时,当前将忽略
3x
比例因子的所有 asset。因为搜索是从通用 asset 开始的,所以找不到用于特定内存或图形类的 asset。例如,如果您提供一张图片而仅提供6GB和Metal 5v1 asset,则在运行时将找不到该 asset。建议您将所有图像作为矢量提供,以生成正确的比例因子,或者至少提供 2x 版本的 asset。如果您要根据内存和图形系列对资源进行分类,则应提供“任何内存”和“任何图形”。
• 从 iPad 应用程序创建 Mac Catalyst 应用程序时,Xcode 会自动生成唯一的 Mac bundle 标识符。如果您已有想要使用的 Mac bundle 标识符,则可以通过在 Xcode 中手动签名来实现。 (51076014)
请按照以下步骤配置您的项目、AppID 和配置文件:
1. 登录到 Apple Developer,然后选择证书,标识符和配置文件。
2. 在“标识符”部分中,选择要编辑的 iOS 应用标识符。
3. 检查 Mac Catalyst 功能以启用它,然后单击“配置”按钮。
4. 选择使用现有的 macOS AppID,然后从弹出菜单中选择要使用的标识符。单击保存按钮以完成您的AppID的编辑。
5. 在 Profiles 选项中,点击 `+` 按钮创建新的 profile,选择 `macOS App Development`,然后点击继续。
6. 从弹出窗口中选择您的iOS AppID,单击“继续”,然后完成其余的配置文件创建流程。完成后,单击下载按钮。
7. 在Xcode中,选择您的项目以查看 Project Editor,然后选择应用程序的目标。然后选择 Build Settings 选项卡。
8. 将 Derive Mac Catalyst Product Bundle Identifier 设置为 NO。
9. 展开 Product Bundle Identifier 构建设置以查看其配置。在 Debug 配置旁边,单击 `+` 按钮以添加条件值。
10. 对于构建设置条件,从弹出菜单中选择 `Any macOS`。编辑条件构建设置的值以匹配您要使用的 macOS bundle 标识符。对项目中的所有配置重复此步骤。
11. 在 Signing & Capabilities 选项卡中,取消选中 Automatically 管理签名。
12. 对于您的macOS应用,请从 Provisioning Profile 弹出窗口中选择 Import Profile,然后选择您先前下载的配置文件。
复制代码