博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
L2 - 签名、自动化打ipa文件、证书
阅读量:4083 次
发布时间:2019-05-25

本文共 2142 字,大约阅读时间需要 7 分钟。

如何判断包是用于模拟器还是真机?

方法:查看 .app文件里有无 _Codesignature文件夹。

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

1、申请免费开发者账号

步骤:

(1)打开,点击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

一、开发者账号体系

参考文章:

账号

这里写图片描述

证书

一个账号可以有多个证书。有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、通过命令生成应用安装文件

你可能感兴趣的文章
React+Redux程序
查看>>
react-router 学习笔记
查看>>
react-redux学习
查看>>
redux学习
查看>>
redux-applyMiddleware实现理解+自定义中间件
查看>>
React Router基础教程
查看>>
React-Router 中文简明教程(上)
查看>>
React-Router 中文简明教程(中)
查看>>
React-Router 中文简明教程(下)
查看>>
如何将react/react native中的ES5写法转化成ES6?
查看>>
深入学习 ES6 的迭代器 和 for-of 循环
查看>>
分享一些前端开发中最常用的JS代码片段以及理解 JS闭包
查看>>
jQuery 3.0 带来哪些新特性
查看>>
总结 React 组件的三种写法 及最佳实践 [涨经验]
查看>>
JS escape urlencodeComponent urlencode 区别
查看>>
Jquery常用技巧
查看>>
Javascript 库,封装了一些常用函数
查看>>
Js常用逻辑
查看>>
用JS获取地址栏参数的方法
查看>>
Js常用逻辑函数
查看>>