macOS 11 & M1(Apple Silicon) 带来的变化

macOS 11 - 操作系统

Get ready for macOS Big Sur

简介

一般来说只要在arm64架构上重新编译老的代码就可以将app、lib、framework、plug-ins等移植到新的硬件中;除非是依赖于特定的硬件细节,或者需要利用底层硬件特性才需要特别地修改代码。

Human Interface Guidelines中 新增部分

概括地说,就是要使用SwiftUI和Apple的自动布局,当然也可以做更多更细节的工作。

macOS 11做了许多系统级别的UI改动。图标、经典UI控件,titlebar……

App Clip 应用剪辑

应用剪辑可以使未安装完整应用的用户可以使用某些应用功能。它是对应应用程序的一个轻量级版本,可以让用户随时随地使用它,并且不需要安装在手机上。 (感觉有点像微信小程序的意思)

App Clip是根据场景触发的,它不是从AppStore下载。比如NFC,或者是二维码……也可以在手机浏览器上加一个按钮作为入口,甚至是二次转发分享。

对于使用App Clip展示哪些功能肯定是App开发者需要考虑的事情,App应该最多地展示App的特性。

一旦用户安装了App Clip对应的App,就可以使用App而不是App Clip。

由于使用的是系统级的UI,所以性能不是Web应用可比的。

Creating an App Clip with Xcode

Creating a Widget Extension

WWDC20上的Sample Code

Design great app clips前几分钟介绍了什么是App Clip。

用户设计指南中的 App Clips

WWDC中关于App Clip的视频

WidgetKit

在iOS主屏幕或macOS通知中心上显示您应用中的相关内容,浏览内容

Introducing WidgetKit

用户设计指南中的 Widgets

开发指南 WidgetKit

WWDC2020中关于widgets的视频

iPad代码迁移到macOS

官方教程 Bring an iPad App to the Mac with Mac Catalyst

什么是 Mac Catalyst Mac 催化剂?内置Mac本机应用程序 Mac催化剂可以与iPad应用共享代码,并且可以添加仅适用于Mac的更多功能。

Choosing a User Interface Idiom for Your Mac App

使用Mac Catalyst构建的Mac应用程序中选择iPad或Mac用户界面习惯用法。也就是iPad和Mac的代码放在一起写,做系统版本的区分。

Adding Menus and Shortcuts to the Menu Bar and User Interface

FrameWork

控件的变更

WidgetKit 在iOS主屏幕或macOS通知中心上显示您应用中的相关内容,浏览内容。

开发工具

Xcode 12

Apple Silicon 苹果的“硅晶体” - CPU

这个是指Apple自己的CPU: M1。

macOS 11 Universal Apps beta SDK可以允许用户在Xcode上构建基于Intel和M1的程序。 当然需要下载工具和库 Beta Software Downloads

通用应用程序 Universal App Quick Start Program

开发指南 Apple Silicon

Porting Your macOS Apps to Apple Silicon Universal程序内部结构如下,包含了两种架构的可执行文件。 image

现有的基于Intel x86架构的代码可以通过Rosetta来转一下运行在ARM架构的机器上: About the Rosetta Translation Environment,Rosetta对于用户而言是透明的,基于Intel x86的代码会被自动转化为基于ARM的指令,如果是包含二者的代码,用户可以特别指定使用Rosetta来转,或者直接运行ARM指令的可执行文件。

代码迁移中注意的点 Addressing Architectural Differences in Your macOS Code (很多细节性的内容)。

参考

Apple的所有技术汇总Technologies

最后

写代码的话,当然是要区分系统版本的:iOS 14+ 以及 macOS 11+,以及硬件版本。

ref Building a Universal macOS Binary

/// arm64 and x86_64 architectures
#if arch(arm64)
   // Code meant for the arm64 architecture here.
#elseif arch(x86_64)
   // Code meant for the x86_64 architecture here.
#endif
/// iOS and macOS app
#if os(macOS)
   // Put CPU-independent macOS code here.
   #if arch(arm64)
      // Put 64-bit arm64 Mac code here.
   #elseif arch(x86_64)
      // Put 64-bit x86_64 Mac code here.
   #endif
#elseif targetEnvironment(macCatalyst)
   // Put Mac Catalyst-specific code here.
#elseif os(iOS)
   // Put iOS-specific code here.
#endif

未来可能会有2-3年的时间作为过渡,这个时间过后会是纯净的ARM架构的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值