(七)创建配置文件 Provisioning Profile

作者:kim

时间:Apr 27, 2015

版权:非商用,自由转载,请保留原文地址

 

 

1. Provisioning Profile 是苹果独有的,安装在设备上的配置文件,后缀名是 .mobileprovision ,通常简称 PP 文件。

 

简单地说,PP 文件就是把 Certificates 个人证书、App ID(或者其它各种服务种类的 ID)、Device ID,三者捆绑起来。
Provisioning Profile = Signing Certificate + App(Service) ID + Device ID

 

F8BFE2AC-DFBA-4EB0-8E5D-EF3A3127103B

 

 

2. 简单地说,Provisioning Profile 用来描述哪些人开发的哪些 App(或者服务)能够在哪些 Device 上面运行的文件。

1)Provisioning Profile 决定 Xcode 用哪个证书(包含用户的公钥)/私钥组合(Key Pair / Signing Identity)来签署应用程序(Signing Product)。
2)在应用程序打包时,Provisioning Profile 被嵌入到 .ipa 包里。
3)安装应用程序时,Provisioning Profile 文件被拷贝到 iOS 设备中,运行该 iOS App 的设备也通过它来认证安装的程序。

 

1570862B-C15D-4B1D-B989-75AA59FF24DB

 

 

3. 在网站上访问 “Certificates, Identifiers & Profiles” -> Provisioning Profiles ,进入 iOS Provisioning Profiles 配置文件创建界面。

 

4373FC58-0C89-4A87-88EC-2F4878B651B0

 

4. 点击 “manually generate profiles” 或者右上角的 “+” 号,挑选配置文件的类型。这里我们需要的是 Development 开发型配置文件。

 

9E696E05-D50F-4DE8-A72B-E5532C5BA0FC

 

5. 点击 Continue,选择要包含的 App ID 。

 

B5082CC2-40A9-415F-A64C-B7D00B315FF0

 

6. 点击 Continue,选择要包含的证书 Certificate(可多选)。注意,被签名加密的 App 的相应的那个证书必须被添加进去!

 

95913795-B1D2-4372-B128-80362D143BBF

 

7. 点击 Continue,选择设备 Devices(可多选)。

 

F5A95363-E0E3-4BD9-AE65-501FA5336B43

 

8. 继续点 Continue,给 Provisioning Profile 配置文件起名。

 

61370B88-A3F0-409E-AB69-C59ED14216E2

 

9. 点击 Generate,生成配置文件。

 

04A71695-8256-4C6D-A95E-B5223E15D0D5

 

10. 点击 Download 下载 .mobileprovision 文件,这就是生成好的配置文件。不下载其实也是可以的,因为 Xcode 会帮你管理它。

 

1B53AE2E-8267-4F0F-88E4-FCAA4F28D920

 

11. 在网站的配置文件列表能看到,新的配置文件已经处于 Active 激活状态。

 

7080697B-F882-418C-8B51-ABC98651055D

 

12. 另一方面,Xcode 将全部配置文件,包括用户手动下载安装的,和 Xcode 自动创建的 iOS Team Provisioning Profile,都放在目录 ~/Library/MobileDevice/“Provisioning Profiles”/ 下。

 

F29CC206-3BA9-4974-881F-D8FC3449ECFE

 

13. 可以用 security 命令查看一下配置文件的内容,我们可以看到 PP 文件实际上是一个 XML 格式的 plist 文件。
$ security cms -D -i nameofppfile.mobileprovision

 

6450E3A9-A639-40ED-A92A-02E661B6047F

 

14. 注意到其中的 UUID 信息,就是每个 PP 文件的唯一标识,通常作为文件名前缀。

 

8D7ED105-8696-46DA-BCDF-B978286A1B85

 

 

15. 注意到 DeveloperCertificates 信息,这是一个数组,包含了所有的证书信息,证书(即data)都是基于 Base64 编码的,符合 PEM(Privacy Enhanced Mail, RFC 1848) 格式。

 

 

16. 因为一个证书可以存在于多个不同的配置文件之中,所以在实际开发中,如果用 Xcode 自己选择配置文件的话,可能存在不确定性。幸好,Xcode6 开始提供了选择配置文件的功能,让用户自己为项目选择合适的 Provisioning Profile!

 

9F7DC716-B6BC-4A81-8666-70592BE473D7

 

17. iOS 设备和 Mac 系统都使用 Provisioning Profile 中的开发/发布证书来判断 App 的合法性与完整性!

 

1)可信性:使用苹果根证书 AppleWWDRCA.cer 能正确地从证书中解密出 App(Executable Code)的内容摘要(Signature),则证明此 App 确实是经过苹果签发的,即确实是认证开发者发布的!
2)完整性:对 App(Executable Code)本身使用 PP 文件记录的哈希算法,计算出内容摘要(Signature),若与第一步得到的一致,则证明此 App 确实未被篡改过!

 

 

Posted in iOS, Training | Tagged , , | Leave a comment