ios中签名详解

Code signing


Code signing 对你来说,最主要的意义就是它能让你的App在设备上运行。不管是你自己的设备,甲方客户的,还是在App store上购买你的消费者。
如果没有code signing,你只可以在模拟器上,或者一台越狱过的机器上运行你的应用—-当然,仅仅如此是不能满足我们的。
模拟器的测试仅仅是一种初步测试,模拟器不能替代真机调试,因为:

1、真正的设备会通常比模拟器慢

2、设备的内存少很多

3、有些API只在设备上有效

Ps:一些视觉上的效果在模拟器上看到的可能会与真机不一致)

Public and Private Keys公钥私钥:

这世上有两种加密方法:

symmetric cryptography 对称加密

asymmetric cryptography 非对称加密

对于对称加密,只有一种key。譬如你有一个密钥,以及对应的一个加密过的信息。那只有知道密钥的人可以解读这个信息。

对于非对称加密,有两个key ->公钥私钥。 譬如你用某个私钥加密一些信息,别人收到这个信息后可以通过那个私钥对应的公钥来加密。这样他们就可以肯定,这个信息是从你那里来的(至少是你加密的)。
这个私钥就相当于一个签名。(你加的密,就是你签的字)
而这个,就是在iOS中code signing背后的原理

Code Signing Objects

与Code Signing 有关的东西有:

Provisioning ProfilesAPP IDsUDIDs...

我用Core Data 绘制了一个图表,用来描述这些对象之间的关系。


Ps:这是针对开发人员的(Development Profile),发布人员的图会有小小区别。

私钥 Private Key

在Mac OS X以后,key由一个叫做Keychain的app来管理。你可以在Application/Utilties中运行KeyChain,你可以看到在你的名下有那些公钥和私钥。类似这样的:

这是私隐,要加码的

如果你没有看到任何Key的列表,不用担心。在你第一次使用认证的时候,Keychain会帮你创建。

在这里列出的key是你的Provisioning或者 code signing的基础。
你必须有key才能sign code或者在App store中发布你的app。

如果key丢失了?

你必须把整个流程重新做一次—>因为没有key,你的认证不再有效,你的Provision Profile只会生成error。你会浪费很多时间,所以,好好保管它。

如果你没有备份过,我建议你马上把他export出来,通过File/Export Items,保存在一个安全的地方,例如一个很小的分区中。或者通过你的Mobile Me账号来同步保存。

有多个Key?

如果你在不同的Mac上创建过account,你将会有多个key。
这样会带来一个问题,在机器A上生成的认证,在没有私钥的机器B上会失效。所以,你可以吧你所有的key复制到你所有的Mac机上。(这样就不用烦了)或者,我更建议只有一个key

UDID

UDIDUnique Device Identifier)是区分物理设备的唯一标识。
所有你的iPhone肯定有一个与众不同的UDID,包括你的iPad等等、
通常,UDID会是一个40位十六进制字符串。也就是下图中的identifier:

如果App不是从app store上来,你的代码需要有UDID的信息才能运行。怎么知道你拥有的设备UDID?有几个方法:

1.如果你的设备连接到Xcode的机器上,你可以在Organizer 中看到 UDID。

2.没有Xcode的朋友也可以,在iTunes的Summary界面,有serial number(序列号)的信息,点击可以看到。

3.这是最简单的方法,在App store中下载一个Ad Hoc Helper吧。

Certificate 认证 (Certificate Signing Request)

认证,就是你的个人开发者认证,或者更华丽地说:Apple Worldwide Developer Relations Certification Authority Certificate.
这个本质上就是一些代表着信任-授权的数据而已。
获取一个认证,你需要在Keychain Access 中生成一个Certificate Signing Request,并把它发给Apple。这会创建一对 公钥-私钥 (如果还没有的话)。
Apple收到后会验证信息,然后给你创建一个认证。

App ID

在Xcode中创建一个项目,你需要提供Product NameCompany Identifier的信息。

Product Name,就是你的App的一个较短的名称。

Company Identifier,通常是一个反转的DNS串,例如:com.littleBit.www

这_两者合起来_,就似乎Bundle Identifier。你会在Info.plist中找到。
对于每一个你要发布的app。你需要大iTunes Developer Center中注册你的App ID。如下图:

这个需要与你在Info.plist中设置的一致。

Provisioning Profile

把前面降到的东西合起来:

App ID (app的唯一标识)

UDID(在某台设备上运行的唯一标识)

Certificate(开发者认证)

就是所谓的Provision Profile。

Provisioning Profile 通过Xcode或者iTunes 导入到device中,或者打包到一个包含app和Profile的.ipa文件中。
你可以在iOS Provisioning Portal中创建你的Provisioning Profile。

新建一个,有以下一个步骤:

1、为Profile命名,以后你会在Xcode的organizer,Build Setting以及其他一些地方看到

2、选择你的Certificate

3、选择你的App ID ,要和Info.plist中的一致。

4、选择要用到的设备。通常,我都把我的设备全选。

个人用途的签名 Signing

  假设你已经有一个准备测试的App,而你有IDP,并且处理好Provisioning Profile的事情了。

  现在你清楚已经知道它们的逻辑了,如果你新加入,下面这些是你要做的:

  1 检查你的公钥私钥,为以后检查方便,起个好名吧。

  2 用Keychain Access来创建你的开发认证。然后下载Apple给你的认证,双击安装,然后你可以在Keychain中看到了吧。

  3 下载Apple Worldwide Developer Relations Certification Authority CertificateWWDR)也是双击安装,也可以到Keychain中看到。

  4 检查你项目的Bundle ID,到Provisioning Portal中创建一个一致的App ID。

  5 在Provisioning Portal中加入你想要的UDID。(全部加上好了)

  6 针对你的Certificate创建Provisioning Profile, 指定你的app ID 和UDID。

  7 下载刚刚创建的Profile,拖到你的xcode Organizer中。

  然后,你就可以sign你的project,并让它们在你的device上运行了。

  Target – Build Settings,往下滚动到 Code Signing一节。

  试试编辑一下Debug schema,它适合于团队协作:

  Automatic ProfileSelector中选择iPhone Developer,你会看到你的认证已经自动选上了。

  一切都搞定了,连接你的device,在xcode中选择Debug buildbuild & run

  xcode会到你的设备里装上这个provisioning profile,并运行你的App。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值