L2 - 签名、自动化打ipa文件、证书

如何判断包是用于模拟器还是真机?
方法:查看 .app文件里有无 _Codesignature文件夹。

二、安装到真机上的应用都必须经过签名

1、申请免费开发者账号

步骤:
(1)打开https://developer.apple.com,点击Account;
(2)输入Apple ID 账号密码,点击Sign in;
(3)同意协议,完成。

2、添加账号到 Xcode

(1)打开Xcode,Xcode -Preference;
(2)点击Account;
(3)点击右下角+号,输入账号名称及密码;完成。

3、给项目添加开发者签名

这里写图片描述

如果报如下错误:

could not launch “helloworld”,process launch failed:Security。

需要信任开发者账号:

(1)在iOS设备中,进入设置- 通用 - 描述文件
(2)选择自己的账号,点击 信任,再run。


三、通过xcode command line生成.app和.ipa文件

1、打 .app文件给真机(使用Debug签名)

在项目目录下执行以下命令:

xcodebuild -project HelloWorld.xcodeproj -target HelloWorld -sdk iphoneos -configuration Debug CODE_SIGN_IDENTITY="iPhone Developer: 金花 陈 (WYM2ZZDM2X)"

这里写图片描述

//获取证书名称
security find-identity -v -p codesigning

//获取项目信息
xcodebuild -list

//获取sdk,如去掉末尾的版本号,则默认使用最新的版本
xcodebuild -showsdks

打包后的文件放在当前目录的 build/Debug-iphoneos/目录中。

2、打 .app文件给模拟器(使用Debug签名)

打包后的文件放在当前目录的 build/Debug-iphonesimulator/目录中。

xcodebuild -project HelloWorld.xcodeproj -target HelloWorld -sdk iphonesimulator -configuration Debug CODE_SIGN_IDENTITY="None"

3、.app 转 .ipa文件

//-v:app文件目录,支持相对路径;
//-o:导出的ipa文件目录,不支持相对路径,必须用绝对路径
xcrun -sdk iphoneos PackageApplication -v build/Debug-iphoneos/HelloWorld.app -o /Users/chenjinhua/learn/IOS/HelloWorld/build/Debug-iphoneos/HelloWorld.ipa

一、开发者账号体系

参考文章:https://segmentfault.com/a/1190000004144556

账号

这里写图片描述

证书

一个账号可以有多个证书。有5种证书:

这里写图片描述

签名机制

iOS证书申请 和 签名打包 流程图:

这里写图片描述

1、证书申请:Private Key

Private Key 通过申请开发者证书获得。

Private Key

2、iOS授权和描述文件: mobile provision 文件 (Entitlement list 是Xcode项目中根据配置自动生成的)

mobile provision 又称 provision profile, 由苹果服务器生成。

mobileprovision文件包含:

(1)其捆绑了 开发者证书、AppID、授权列表、 可安装设备列表 共四大信息;
(2)带有苹果签名,只能由苹果生成,生成方式一般就是点击fix issue。
(3)可通过Xcode- preference - account - view detail 窗口看到此账号对应的所有Provision profile。

3、iOS代码签名

私钥 + mobile provision

前者本地 key chain
后者 苹果服务器生成

3.1 ipa的组成

iOS程序最终都会以.ipa文件导出,ipa文件的结构如下图:

这里写图片描述

ipa文件只是一个zip包,解压后,得到上图的Payload目录,下面是个子目录,其中的内容如下:

(1)资源文件,例如图片、html、等等。
(2)_CodeSignature/CodeResources。这是一个plist文件,可用文本查看,其中的内容就是是程序包中(不包括Frameworks)所有文件的签名。注意这里是所有文件。意味着你的程序一旦签名,就不能更改其中任何的东西,包括资源文件和可执行文件本身。iOS系统会检查这些签名。
(3)可执行文件。此文件跟资源文件一样需要签名。
(4)一个mobileprovision文件.打包的时候使用的,从MC上生成的。
(5)Frameworks。程序引用的非系统自带的Frameworks,每个Frameworks其实就是一个app,其中的结构应该和app差不多,也包含签名信息CodeResources文件


小结

1、开发者证书的分类 及 免费开发者证书的申请

2、安装到真机上的应用都必须经过签名

3、通过命令生成应用安装文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值