分类
外匯交易平臺

构建和发布为 macOS 应用

同样你也可以在项目设置页面配置环境变量

构建和发布为 macOS 应用

北京——2022年8月10日,日前,亚马逊云科技宣布基于Apple芯片Mac mini计算机构建的Amazon Elastic Compute Cloud (Amazon EC2) M1 Mac实例正式可用。该实例由亚马逊云科技Nitro系统提供支持,与基于x86的Amazon EC2 Mac实例相比,构建和测试iOS和macOS应用程序的性价比提高多达60%。十多年来亚马逊云科技构建的基础设施为数百万客户提供了一致的弹性、可扩展性和可靠性。Amazon EC2 M1 Mac实例首次在亚马逊云科技上实现了原生Arm64 macOS环境,用于开发、构建、测试、部署和运行Apple设备的应用程序。为了支持Apple芯片,很多开发者正在重构macOS应用程序。现在,开发者可以在几分钟内配置Arm64 macOS环境,获得容量的动态扩展、"即用即付 "的定价,实现更快地构建应用以及更方便地进行分布式测试。

Apple始于M1 SoC (system on a chip)的专门为Mac设计的定制系列芯片让全球数以百万计的Apple开发者无比期待。M1是第一个采用5纳米新工艺制造的个人计算机系统芯片,它将众多强大的技术整合到一个芯片中,并采用统一的内存架构,提高了性能和效率。Apple 设计的M1 SoC还首次在macOS上实现了支持Arm64架构。

借助Amazon EC2 M1 Mac实例,Apple开发者可以重构macOS应用程序以支持Apple芯片,他们无需采购、安装、管理、修补和升级任何物理基础设施,即可获得更快的构建、接近裸机的性能和方便的分布式测试。开发者也可以在亚马逊云科技上将Apple、Windows和安卓应用程序的跨平台开发整合到一起,进一步节省管理基础设施的资源和时间,提高生产力并加快发布时间。用户可以轻松使用Amazon EC2 M1 Mac实例,它的使用方式与与其他EC2实例一致,包括EC2实例与亚马逊云科技其他服务以及功能的集成,如用于网络安全的Amazon Virtual Private Cloud (Amazon VPC)构建和发布为 macOS 应用 、用于可扩展存储的Amazon Elastic Block Store (Amazon EBS)、用于分配构建队列的Elastic Load Balancing (ELB)和用于操作系统镜像编制的Amazon Machine Images (AMIs)。

Amazon EC2 M1 Mac实例基于Apple芯片Mac mini计算机和Amazon Nitro System,提供了高达10 Gbps的虚拟私有云(VPC)网络带宽,以及通过高速Thunderbolt连接技术而具备8Gbps的 Amazon EBS存储带宽。Mac mini计算机采用M1处理器,具有8个CPU、8个GPU、16GiB内存以及16核Apple Neural Engine。Amazon EC2 M1 Mac实例由Amazon Nitro System独家支持,将Mac mini计算机作为全集成、全托管的计算实例,并与任何其他EC2实例一样如与Amazon VPC和Amazon EBS的集成。Amazon EC2 M1 Mac实例支持macOS Big Sur(11)和macOS Monterey(12)作为操作系统镜像。

Amazon 构建和发布为 macOS 应用 EC2 M1 Mac实例现已在美国东部(弗吉尼亚州北部)、美国西部(俄勒冈州)、欧洲(都柏林)和亚太地区(新加坡)的亚马逊云科技区域正式可用,其他区域将很快推出。

构建和发布为 macOS 应用

收藏

收藏

评分

评分

评论

评论

社区交流公约

罗斯基

关注 --> 已关注

一、根据《网络信息内容生态治理规定》《中华人民共和国未成年人保护法》等法律法规,对以下违法、不良信息或存在危害的行为进行处理。
1. 违反法律法规的信息,主要表现为:
1)反对宪法所确定的基本原则;
2)危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一,损害国家荣誉和利益;
3)侮辱、滥用英烈形象,歪曲、丑化、亵渎、否定英雄烈士事迹和精神,以侮辱、诽谤或者其他方式侵害英雄烈士的姓名、肖像、名誉、荣誉;
4)宣扬恐怖主义、极端主义或者煽动实施恐怖活动、极端主义活动;
5)煽动民族仇恨、民族歧视,破坏民族团结;
6)破坏国家宗教政策,宣扬邪教和封建迷信;
7)散布谣言,扰乱社会秩序,破坏社会稳定;
8)宣扬淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪;
9)煽动非法集会、结社、游行、示威、聚众扰乱社会秩序;
10)侮辱或者诽谤他人,侵害他人名誉、隐私和其他合法权益;
11)通过网络以文字、图片、音视频等形式,对未成年人实施侮辱、诽谤、威胁或者恶意损害未成年人形象进行网络欺凌的;
12)危害未成年人身心健康的;
13)含有法律、行政法规禁止的其他内容;

2. 不友善:不尊重用户及其所贡献内容的信息或行为。主要表现为:
1)轻蔑:贬低、轻视他人及其劳动成果;
2)诽谤:捏造、散布虚假事实,损害他人名誉;
3)嘲讽:以比喻、夸张、侮辱性的手法对他人或其行为进行揭露或描述,以此来激怒他人;
4)挑衅:以不友好的方式激怒他人,意图使对方对自己的言论作出回应,蓄意制造事端;
5)羞辱:贬低他人的能力、行为、生理或身份特征,让对方难堪;
6)谩骂:以不文明的语言对他人进行负面评价;
7)歧视:煽动人群歧视、地域歧视等,针对他人的民族、种族、宗教、性取向、性别、年龄、地域、生理特征等身份或者归类的攻击;
8)威胁:许诺以不良的后果来迫使他人服从自己的意志;

3. 发布垃圾广告信息:以推广曝光为目的,发布影响用户体验、扰乱本网站秩序的内容,或进行相关行为。主要表现为:
1)多次发布包含售卖产品、提供服务、宣传推广内容的垃圾广告。包括但不限于以下几种形式:
2)单个帐号多次发布包含垃圾广告的内容;
3)多个广告帐号互相配合发布、传播包含垃圾广告的内容;
4)多次发布包含欺骗性外链的内容,如未注明的淘宝客链接、跳转网站等,诱骗用户点击链接
5)发布大量包含推广链接、产品、品牌等内容获取搜索引擎中的不正当曝光;
6)购买或出售帐号之间虚假地互动,发布干扰网站秩序的推广内容及相关交易。
7)发布包含欺骗性的恶意营销内容,如通过伪造经历、冒充他人等方式进行恶意营销;
8)使用特殊符号、图片等方式规避垃圾广告内容审核的广告内容。

4. 色情低俗信息,主要表现为:
1)包含自己或他人性经验的细节描述或露骨的感受描述;
2)涉及色情段子、两性笑话的低俗内容;
3)配图、头图中包含庸俗或挑逗性图片的内容;
4)带有性暗示、性挑逗等易使人产生性联想;
5)展现血腥、惊悚、残忍等致人身心不适;
6)炒作绯闻、丑闻、劣迹等;
7)宣扬低俗、庸俗、媚俗内容。

5. 不实信息,主要表现为:
1)可能存在事实性错误或者造谣等内容;
2)存在事实夸大、伪造虚假经历等误导他人的内容;
3)伪造身份、冒充他人,通过头像、用户名等个人信息暗示自己具有特定身份,或与特定机构或个人存在关联。

6. 传播封建迷信,主要表现为:
1)找人算命、测字、占卜、解梦、化解厄运、使用迷信方式治病;
2)求推荐算命看相大师;
3)针对具体风水等问题进行求助或咨询;
4)问自己或他人的八字、六爻、星盘、手相、面相、五行缺失,包括通过占卜方法问婚姻、前程、运势,东西宠物丢了能不能找回、取名改名等;

7. 文章标题党,主要表现为:
1)以各种夸张、猎奇、不合常理的表现手法等行为来诱导用户;
2)内容与标题之间存在严重不实或者原意扭曲;
3)使用夸张标题,内容与标题严重不符的。

8.「饭圈」乱象行为,主要表现为:
1)诱导未成年人应援集资、高额消费、投票打榜
2)粉丝互撕谩骂、拉踩引战、造谣攻击、人肉搜索、侵犯隐私
3)鼓动「饭圈」粉丝攀比炫富、奢靡享乐等行为
4)以号召粉丝、雇用网络水军、「养号」形式刷量控评等行为
5)通过「蹭热点」、制造话题等形式干扰舆论,影响传播秩序

9. 其他危害行为或内容,主要表现为:
1)可能引发未成年人模仿不安全行为和违反社会公德行为、诱导未成年人不良嗜好影响未成年人身心健康的;
2)不当评述自然灾害、重大事故等灾难的;
3)美化、粉饰侵略战争行为的;
4)法律、行政法规禁止,或可能对网络生态造成不良影响的其他内容。

二、违规处罚
本网站通过主动发现和接受用户举报两种方式收集违规行为信息。所有有意的降低内容质量、伤害平台氛围及欺凌未成年人或危害未成年人身心健康的行为都是不能容忍的。
当一个用户发布违规内容时,本网站将依据相关用户违规情节严重程度,对帐号进行禁言 1 天、7 天、15 天直至永久禁言或封停账号的处罚。当涉及欺凌未成年人、危害未成年人身心健康、通过作弊手段注册、使用帐号,或者滥用多个帐号发布违规内容时,本网站将加重处罚。

macOS

“Classic” Mac OS的特点是完全没有命令行模式,它是一个100%的图形操作系统。预示它容易使用,它也被指责为几乎没有内存管理、协同式多任务(cooperative multitasking)和对扩展冲突敏感。“功能扩展”(Extensions)是扩充操作系统的程序模块,譬如:附加功能性(例如:网络)或为特殊设备提供支持。某些功能扩展倾向于不能在一起工作,或只能按某个特定次序载入。解决Mac OS的功能扩展冲突可能是一个耗时的过程。

Mac OS也引入了一种新形的文件系统,一个文件包括了两个不同的“分支”(forks)。它分别把参数存在“资源分支”(resource fork),而把原始数据存在“数据分支”(data fork)里,这在当时是非常创新的。但是,因为不能识别此系统,这让它与其它操作系统的沟通成为挑战。

为了挽救这种情况,Mac OS X使用基于BSD Unix的内核,并带来Unix风格的内存管理和先占式多工(pre-emptive multitasking)。大大改进内存管理,允许同时运行更多软件,而且实质上消除了一个程序崩溃导致其它程序崩溃的可能性。这也是首个包括“命令行”模式的Mac OS,除非执行单独的“终端”(terminal)程序,否则你可能永远也见不到。但是,这些新特征需要更多的系统资源,按官方的说法Mac OS X只能支持G3以上的新处理器(它在早期的G3处理器上执行起来比较慢)。Mac OS X有一个兼容层负责执行老旧的Mac应用程序,名为Classic环境(也就是程序员所熟知的“蓝盒子”[the blue 构建和发布为 macOS 应用 box])。它把老的Mac OS 9.x系统的完整拷贝作为Mac OS X里一个程序执行,但执行应用程序的兼容性只能保证程序在写得很好的情况里在当前的硬件下不会产生意外。 [2]

macOS 名称变化

macOS 版本历史

主设计人:Mac OS 9.0是比尔·阿特金森、杰夫·拉斯金和安迪·赫茨菲尔德,是乔布斯还在苹果的时候开发的,后来他离开苹果创立NeXT后为其开发了另一套系统,主设计人是艾维·特万尼安(Avie Tevanian),乔布斯回归苹果后逐渐抛弃了以前的代码,在发布Mac OS X时,正式使用艾维·特万尼安当时编写的代码作为其主代码。

Mac App Store是找到和下载Mac应用程序的最佳途径。如同在iPad上选购App Store中的应用程序一样,Mac App Store为浏览和购买应用程序提供无限可能。新购买的应用程序可一步完成安装,并立刻呈现于全新Launchpad 上。Mac App Store现可在任意一台运行OS X Snow Leopard的Mac上使用,并将作为OS X Lion的一部分提供。

北京时间2019年6月4日凌晨1点,2019年WWDC全球开发者大会上苹果发布Mac OS Catalina 10.15,用户能将iPad用作Mac电脑的第二块显示屏,用Apple Pencil在iPad上操作等同于在Mac电脑上输入,可以实现语音控制。

北京时间2020年06月23日,在2020苹果全球开发者大会上,苹果正式发布了Mac OS的下一个版本:Mac OS 11.0,正式称为Mac OS Big Sur。 [3] 该版本使用了新的界面设计,增加了Safari浏览器的翻译功能等。

macOS 系统简介

全屏幕窗口是Mac OS中最为重要的功能。一切应用程序均可以在全屏模式下运行。这并不意味着窗口模式将消失,而是表明在未来有可能实现完全的网格计算。iLife 11的用户界面也表明了这一点。这种用户界面将极大简化电脑的使用,减少多个窗口带来的困扰。它将使用户获得与iPhone、iPod touch和iPad用户相同的体验。计算体验并不会因此被削弱;相反,苹果正帮助用户更为有效地处理任务。

在iPad上,每个应用程序都能全屏显示,有效排除视觉干扰,你还可轻松返回其他应用程序。Mac OS X Lion 将同一功能带到台式电脑。你只须点击一下,即可全屏显示某个应用程序,或轻扫一下触控板,便可切换至另一个全屏应用程序,再次轻扫则返回桌面,以访问其他的应用程序,实现这一切都无须退出全屏模式。整个系统支持第三方开发人员在他们开发的应用程序中充分利用这一全屏技术,让开发的应用程序看上去更生动。因此,你可专注于工作细节,或享受更宽阔的视界。

Mac App Store的工作方式与iOS系统的App Store完全相同。他们具有相同的导航栏和管理方式。这意味着,无需对应用进行管理。当用户从该商店购买一个应用后,Mac电脑会自动将它安装到启动台中。对于普通用户而言,即使利用Mac电脑的拖放系统,安装应用程序仍有可能是一件很困难的事情,这也就是App Store存在的意义

调度中心是一项强大易用的新功能,让你完整地查看Mac上正执行的内容。你可将一切尽收眼下,包括仪表盘和所有全屏应用程序,它们都将在同一地方显示。只须轻扫一下,你的桌面即可切换到调度中心。在那里,你将看到按应用程序分组的打开窗口、全屏应用程序缩略图以及仪表盘,一切都呈现于同一个视窗里。同时,你只须轻点一下,便可访问调度中心里的任何选项,让你轻松掌控全局。手势和动态效果更多与Mac互动的便捷方式 多点触控手势让你在iPad上的每项操作都简单、直观。Mac有了更丰富的多点触控操控体验。你可享受更流畅、逼真的手势响应效果,包括橡皮圈滚动、页面和图像缩放和全屏轻扫。在Mac OS中,所有轻扫、两指开合和滚动手势的观感和触感体验都更加生动、灵敏。

告别手动保存吧;有了Mac OS的自动保存功能,任务在你工作过程中即可自动保存,为你省去这项操作。Mac OS不会创建额外的副本,而是将更改保存在工作文件中,从而使磁盘空间得到最有效利用。锁定功能可防止意外更改被保存,并会在两周后自动锁定文档。恢复功能可为你显示上一次打开时的文档状态,因此你总有机会重新开始。

想升级Mac OS版本,无须前往零售店购买盒装软件,并安装一大堆光盘。你只需点击设置图标,并点击软件更新图标,即可免费更新Mac OS,Mac会完成余下的工作。只要确保你已具备将新Mac OS升级到Mac的必备条件即可。

Mac OS以简单易用和稳定可靠著称;因此在开发Mac OS的过程中,Apple工程师们只有一个目标:精益求精。不断寻找可供完善、优化和提速的地方-从简单的卸载外部驱动到安装操作系统。超凡品质如今更上层楼。

随OS X Leopard发布的时间机器功能,首度推出革命性的硬盘备份解决方案。Time Capsule则利用其无线硬盘和时间机器协作,进一步增强了备份功能。Snow Leopard则将时间机器的工作效率提高,Time Capsule的初始备份时间减少达50%。

在OS X Snow Leopard之前只能通过拼音等键盘输入方式输入中文。而在这之后,有了创新的输入方式:在触控板上手写输入,这已经成为现代Mac OS的一项特殊功能.手写时屏幕上会打开新的输入窗口,显示笔划近似的所有备选单字,并根据所选单字建议接下来可能用到的单字。

通过基于系统调用hooking的技术手段,实现了Mac OS系统下系统调用hooking的通用框架。该框架可根据用户配置对指定系统调用进行监控并输出定制日志,构建了基于策略的安全事件监测与处理机制。实验测试结果表明,该框架具备对mac OS底层系统所有系统调用函数的监控能力,其基于策略的事件监测机制运行有效,可为mac OS系统下的安全研究及应用提供良好支撑。 [2]

mac OS系统内核XNU继承于UNIX系统。在Intel架构的64位系统中,应用层调用SYSCALL指令进入内核态,调用hndl_syscall中断服务分发例程,通过该例程来决定调用哪一号中断服务,mac OS系统内核XNU中系统调用类型之一的UNIX系统调用对应0x80号中断服务,通过unix_syscall64例程来选择执行用户请求的UNIX系统调用,并将结果返回给用户程序。 [2]

macOS 取证方法

随着苹果电脑的普及,取证分析中很多情况下要考虑Mac OS的取证,如果被取证的Mac系统设置了登录密码, 那么取证过程中就要想办法绕过登录密码,取得管理员权限。主要介绍了绕过Mac OS系统登录密码的原理,介绍了HFS+文件系统的卷结构,深入剖析了HFS+文件系统卷头结构,元数据文件以及节点结构。

Mac OS X,这是一个基于UNIX核心的系统,增强了系统的稳定性、性能以及响应能力。它能通过对称多处技术充分发挥双处理器的优势,提供无与伦比的2D、3D和多媒体图形性能以及广泛的字体支持和集成的PDA功能。Mac OS X通过Classic环境几乎可以支持所有的Mac OS 9应用程序,直观的Aqua用户界面使Macintosh的易用性又达到了一个全新的水平。

文件系统除了让用户供稳定地存放文件这一目标以外,还是各项操作系统功能的基础。Mac OS X每个大发行版都要增加数百项新功能,许多新功能严重依赖于文件系统的实现。Mac OS X 10.3提供了FileVault来加密用户文件,因此用户主目录被保存在一个HFS+文件系统加密镜像中。

macOS 发展历史

最早期的IBM PC其架构类似C64。当然也使用了BIOS以初始化与抽象化硬件的操作,甚至也附了一个BASIC解释器,但是它的BASIC优于其他产品的原因在于他有可携性,并且兼容于任何符合IBM PC架构的机器上。这样的PC可利用Intel-8088处理器(16-bit寄存器)寻址,并最多可有1MB的内存,然而最初只有640KB。软式磁盘机取代了过去的磁带机,成为新一代的储存设备,并可在他512KB的空间上读写。为了支持更进一步的文件读写概念,磁盘操作系统(Disk Operating System,DOS)因而诞生。此操作系统可以合并任意数量的磁区,因此可以在一张磁盘片上放置任意数量与大小的文件。文件之间以档名区别。IBM并没有很在意其上的DOS,因此以向外部购买的方式取得操作系统。

而1980年代另一个崛起的操作系统异数是Mac OS,此操作系统紧紧与麦金塔电脑捆绑在一起。此时一位施乐帕罗奥托研究中心的员工Dominik Hagen访问了苹果电脑的史蒂夫·乔布斯,并且向他展示了此时施乐发展的图形化使用者界面。苹果电脑惊为天人,并打算向施乐购买此技术,但因帕罗奥托研究中心并非商业单位而是研究单位,因此施乐回绝了这项买卖。在此之后苹果一致认为个人电脑的未来必定属于图形使用者界面,因此也开始发展自己的图形化操作系统。现今许多我们认为是基本要件的图形化接口技术与规则,都是由苹果电脑打下的基础(例如下拉式菜单、桌面图标、拖曳式操作与双点击等)。但正确来说,图形化使用者界面的确是施乐创始的。

上一年代于市场崛起的苹果电脑,由于旧系统的设计不良,使得其后继发展不力,苹果电脑决定重新设计操作系统。经过许多失败的项目后,苹果于1997年释出新操作系统——Mac OS的测试版,而后推出的正式版取得了巨大的成功。让原先失意离开苹果的Steve Jobs风光再现。

使用 CI 构建和发布 electron 应用

alphat release

electron-builder 是一款 electron 应用打包工具,简单配置就可以生成各种不同平台不同格式的安装包。支持的包有:mac 平台的 mas, dmg, pkg;win 平台的 nsis, nsisWeb, portable, appx, squirrelWindows;linux 平台的 deb, snap, appImage, pacman, rpm, freebsd, p5p, apk。同时,它还支持将构建的安装包上传到 Github Releases, Amazon S3 等服务中。从构建到发布,我们唯一剩下要做的就是正确配置。

其中 postinstall 不是必须的,只有在使用了原生模块时需要。

--publish onTagOrDraft 用来自动发布,详见文档

electron 可以从 package.json 的 build 中读取配置信息

mac 和 dmg 将指导 electron-builder 构建适用于苹果系统的应用, win 指导构建 windows 应用,它表明制作安装包为 nsis 格式, linux 用于构建 linux 应用,它将生成安装包 deb 和 appImage。

mac 和 linux 下的 category 必须,具体有那些可选字段参考 mac category 和 linux category

electron-builder 需要 GHTOKEN(Github Personal access token) 才有权限上传文件到 Github Releases 中。该 Token 在 github token 配置页面 中进行设置。由于我们的 CI 只需要公用仓储的访问权限,所以只需要勾选`repo > publicrepo` 复选框即可。这个 token 只显示一次,需要记录下来,我们在 CI 中配置 GH_TOKEN 环境变量时要用到这个值。

你可能认为我们并不需要 CI。然而,我们需要为三种不同平台构建应用,而应用是有平台依赖的。你的 Linux 无法构建 Mac 应用,Linux 能通过 wine 构建 windows 应用,但是如此 hack 的行为你能相信构建成的应用的质量吗?正常来说是适用于特定平台的应用是需要在对应平台构建的。所以我们需要 CI,使用 AppVeyor 构建 windows 应用,使用 Travis 构建 Linux 和 Mac 应用。

配置很简单明了,从字段名中我们看出各项参数的作用。需要注意的是 install 段,指定安装 node-v8-x64,然后安装包依赖。真正的构建由 build_script 段控制。 branches 段表明只对 master 提交进行构建。

不要忘记配置 GH_TOKEN 环境变量。

可以直接在 appveyor.yml 中配置变量, 如下

其中的 可以通过将 GH_TOKEN 用 AppVeyor 提供的 工具 加密后获得。

appveyor env

你也可以在项目设置中配置

当你提交 master 分支和 vx.xx.xx 标签到 github 时,appveyor 将自动构建 windows 安装包并发布到 Github draft release。

Travis 的设置与 AppVeyor 类似。添加 .travis.yml 文件

language 指定 nodejs, 这样我们可以就使用 node 和 npm 。`nodejs 中指定 node 版本。需要特别注意的是 os` 段,指定 linux 和 osx,这样 Travis 构建和发布为 macOS 应用 能够在一次提交中同时运行两个构建,在 linux 下构建 deb 包和 appImage,在 osx 下构建 dmg 和 mac。

你可以使用 travis 构建和发布为 macOS 应用 命令行工具对 GH_TOKEN 进行加密

travis env

同样你也可以在项目设置页面配置环境变量

当你提交 master 分支和 vx.xx.xx 标签到 github 时,travis 将自动构建 linux 和 osx 安装包当发布到 Github draft release。

上面的介绍配置很简练的,尽管它确实能够为我们搭建了一套构建发布体系,但对于正式的商业应用,仍然有许多要调整补充的。你可能要添加原生包支持,应用签名,发布到到 Mac App Store 或 Windows Store 等方面的配置。但我相信这些都不是大问题,因为文档都有说明,而且 CI 类似虚拟机,允许安装并使用命令,本地做的工作几乎都可以在 CI 上完成。希望大家读了这篇文章后能有所收获。