前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS打包——从入门到放弃(一)

iOS打包——从入门到放弃(一)

作者头像
iOS Development
发布2022-12-05 15:59:13
7680
发布2022-12-05 15:59:13
举报

——iOS签名那点儿破事儿

背景

首先来点context——为什么会有「签名」。

1970年代,在Unix上运行program/软件,不需要额外获取权限访问系统的硬件、数据(因为程序是自己写的——你应该不会给自己电脑「下毒」)。

后来,第三方软件出现,出于安全原因,需要对第三方软件的权限做出限制(请求同意后才能获取权限)——你应该不想出现这种情况:别人开发的软件,在不经你同意的情况下,读取了你D盘「Cooking」文件夹里面《第一次做鸭的经历》这个文件——虽然你鸭做得真的很好。

所以,为了解决上面这个问题,Apple的工程师,想到的解决方案是App Sandbox——就是把第三方软件框在一个盒子里,想要用你的硬件(摄像头、麦克风),或者访问你的数据,都要经过你的同意。

这个看这张图:

App Sandbox

「RW APP」就表示第三方软件,黄色区域就是Sanbox,左边就是你电脑的一些资源——第三方软件在经过你同意后,才能访问。

而今天讨论的「签名」,就隐藏在右边的「Provisioning Profile」,这个术语,这里就不作翻译了,后面会介绍定义。

术语

这里涉及几个术语:App IDEntitlementCertificateProvisioning Profile

先看一张图:

Term

App ID

是你的App在苹果平台上的唯一识别码。并通过这个App ID,和你的开发团队绑定在一起。(App IDBundle IDIdentifier,可以当作是同一样东西)

如图所述,它回答的问题是:Who are you?

Entitlement

Xcode中点击Capability+按钮,会增加一个entitlements后缀的文件。 (这里的EntitlementCapabilityCapabilities,可以简单看做是同一样东西)

也可以看作是「permission」的同义词。

这些文件,描述了你的App要访问哪些系统资源。如图所示,就是「你想干嘛」—— What do you want to do?

注意,在操作层面,Entitlement是App ID的一部分,因为在苹果开发者网站中,你想修改Entitlement,就是去到修改Identifier的地方:

Entitlement

另外,如果修改了这里的Entitlement,就需要重新生成「Provisioning Profile」去打包。

Certificate

我们常说的「证书」,用于确认开发者的身份。回答问题:Can I trust you?

常用的是两种类型:

  • Development:你用Xcode跑App到真机,用的就是这个「开发证书」。因为开发者很多,所以可以有很多的「Development Certificate」
  • Distribution:打包上传到App Store,用的就是这个「打包证书」。有一定权限才能生成、使用这个证书,所以不是每个开发者都能打包App。

证书有1年的有效期,过期了,「Provisioning Profile」也就用不了了。

Provisioning Profile

「 Provisioning Profile」将上述的3样东西,整合在一起,让你可以打包你的App。

注意,如果是用Ad Hoc这种发布方式,Provisioning Profile里面还会包含一个额外的Device List——哪些设备能安装这个App。

Ad Hoc是Apple提供的一种内部分发方式,主要是方便小规模的(内部)测试。

除了发布到App Store,苹果还提供了以下5种非公开的「内部」分发方式:

  • Personal Team distribution:就是你自己用Xcode安装App到真机
  • Ad hoc distribution:只能装100台机器,而且「Provisioning Profile」要包含一个能安装App的设备列表——换言之,你需要在打包前取得所有安装手机的UDID。
  • TestFlight:内部100,外部1万——更强大的分发、测试App的方式
  • In-house distribution:大企业的内部分发
  • Custom App Distribution:后出的非公开分发方式,和TestFlight,App Store Connect整合,推荐大企业使用。

(签名)打包

下面演示两种分发方式:「App Store发布」和「Ad Hoc发布」

App Store发布

一些额外的术语

  • CSR(Certificate Signing Request):
    • 用Mac的Keychain Access这个软件,生成的「.certSigningRequest」文件
    • 里面包含了「公钥」、「私钥」、「证书/Certificate」
    • 上传到苹果开发者网站,让苹果「签名」,就会得到一个.cert文件。这样就能确认你的身份了(下载后双击安装)

App Store Release

黑框部分,是「发布证书」的生成,解决的是上述的「Can I trust you」这个问题。

黄框部分的Entitlement,解决的是上述「What do you want to do」这个问题。

红框部分,就是将「发布证书」、「App ID」(提前创建好的)、「Entitlement」这3个东西整合在一起,生成「App Store」类型的「Provisioning Profile」

蓝框部分:打包、上传了——利用Xcode得Archive & Upload

Ad Hoc发布

Ad Hoc Release

粉色框部分:因为Ad Hoc只能分发到特定手机,所以要到开发者王长,注册要安装App的手机(需要拿到手机的UDID)

黑框部分,是「发布证书」,因为上面「App Store发布」的时候,已经创建过「发布证书」了,这里可以用同样的「发布证书」,无需再重复创建。

红框部分,就是将「发布证书」、「App ID」(提前创建好的)、「Entitlement」、「Device List」这4个东西整合在一起,生成「Ad Hoc」类型的「Provisioning Profile」(和「App Store」类型会有些许差异)

蓝框部分:打包、导出ipa文件——利用Xcode得Archive & Upload。然后ipa文件,可以手动安装到手机,也可以上传到第三方平台(DeployGate, 蒲公英 etc),进行「无线安装」。或者自建服务器也可以。

毕。

下回预告:《Build Settings的那些破事儿》

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ——iOS签名那点儿破事儿
  • 背景
  • 术语
    • App ID
      • Entitlement
        • Certificate
          • Provisioning Profile
          • (签名)打包
            • App Store发布
            • Ad Hoc发布
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档