Fastlane构建ipa包流程小结 -- match 篇
来源:互联网 发布:江西省公务员待遇知乎 编辑:程序博客网 时间:2024/04/29 05:24
其实fastlane要利用一个现有的p12文件打一个ipa包出来,主要是分为以下两个步骤:
1. 利用match获取该p12文件对应的证书(certificates)、私有秘钥、预配配置文件(provisioning profiles);
2. 使用gym出一个ipa包;
上面的是我们的构建的步骤,不过在构建的时候还是会遇见一些问题的,以下的便是我们的具体的操作流程;
1. match的话是在给出一个现有的apple id之后match通过这个apple id登录苹果开发者后台,然后根据配置文件生成
* 证书(certificates)
* 预配配置文件(provisioning profiles)
还有一个文件,私有秘钥,那只能是在具体的机器上面的
在生成了这三个文件以后,match除了会让用户设置一个密码,然后安装到现在的机器上面之外,match还会做一件事,就是把那三个文件加密上传到一个git服务器上面。
这样子做会有一个好处,也就说,接下来我想在别的机器上面使用现有的签名,秘钥,预配配置文件的话,只要写入一样的match配置文件,这样以来,我们在第一次运行match这个命令的时候,只要在之后的交互界面输入之前写的密码,就直接可以安装上面所说的三个文件了,这样子的话,就可以满足之后的打包需求了。
下面的是我们的放在fastlane文件夹里面的match的配置文件Matchfile
那其实现在是有一个问题的,我们上面所说的都是在没有那三个文件的基础上生成那三个文件,但是如果现在已经有一个现有的p12文件的话,那我们又应该怎么操作呢?
我们可以分析一下,我们需要的是哪三个文件
1. 证书(certificates)
2. 上面那个证书对应的私有秘钥
3. 预配配置文件(provisioning profiles)
对于某个预配配置文件还有证书的话,我们完全是可以直接在苹果后台直接下载到的
证书
预配配置文件
而秘钥的话,我们其实是可以在p12文件里面分离出来的
可以用下面的手段分离
提取私钥:
openssl pkcs12 -in test.p12 -nocerts -out key.pem
清除秘钥中的密码(在把秘钥部署到某些服务器上时可能需要清除密码)
openssl rsa -in key.pem -out newkey.pem
好了这下子我们就有了上面提到的三个文件
这个三个文件分别对应match的repo底下的三个文件
只不过match的那三个文件和我们这里的三个文件是不一样的
有以下三点不一样
1. 他们的存放路径是不一样的
然后我们看一下match对应的git的repo里面的文件结构
这个是刚刚那个的git repo的文件的目录结构。
注意我把它下载到我电脑上面的【/Users/1q84/Desktop/momo_decrypt_match】的路径底下
对应的远端的repo是【git@git.yodo1.cn:huangchangtao/fastlane-match.git】
下面贴出来的是证书和秘钥文件所在的目录,这里的对应的证书和秘钥是development类型的至于appstore, adhoc, enterprise类型的证书的话是可以以此类推的
2. 它的预配配置文件的命名是有规范的
是根据这个规范命名的
Development_com.featherweightgames.stampede.mobileprovision
其实就是
证书类型_包名.mobileprovision
其中的证书类型的首字母是大写的
而它的存放路径也是放在
比如像
profiles/development
底下的
就比如下下面这个样子。
3. 他们都是被加密过的文件
我们打开看了一下证书文件,以及证书对应的私钥文件,结果发现是被加密过的文件
我们再看一下那个预配配置文件的话
果然,它也是被加密过的
这个的话按照match的文档说明的话,他们应该是根据openssl工具加密过的
2. 好了,现在看看现在我们有什么,以及我们需要做什么
我们有的东西
1. 一个下好的match的repo,不过里面的证书秘钥以及预配配置文件并不是我们想要的,而且他们都是被加密过的文件
2. 我们现在有一个p12文件,并且我们把它的私钥分离出来了,此外我们还到苹果后台下载了证书(certificates)文件,以及预配配置文件(Provisioning Profiles)
我们需要做的东西
1. 把上面提到的三个文件,替换掉现有的repo里面的那三个文件
我们现在遇到的问题
1. 现有repo的文件是加密过的
就举例来说,现在我们现在想要做一个development类型的,包名为com.featherweightgames.stampede的match的话,
我们现在有的是一个现有的repo,这个repo之前设置好的
第一步我们需要解密,之前如果是直接调用match的命令的话是不会有着一步骤的,不过我在网上找了找,其实是有接口支持直接调用match解密的。
下面的阅读步骤是有前提的,前提是我们会在接下来的步骤里面直接操作的是match对应的repo的master分支,还还有我们之前设置的那个repo的密码是123456
好吧,现在贴出手动调用match的解密的ruby接口调用文档
其实很简单,就是调用了下ruby而已
所以其实要进入那个交互界面的话,还是需要我们
先输入指令
https://docs.fastlane.tools/advanced/#manually-manage-the-fastlane-match-repo
$ bundle console
irb(main):001:0>
Then, require match and set the appropriate parameters:
irb(main):001:0> require 'match'
irb(main):002:0> git_url = 'https://github.com/fastlane/example-certificate-repo'
=> "https://github.com/fastlane/example-certificate-repo"
irb(main):003:0> shallow_clone = false
=> false
irb(main):004:0> manual_password = 'example-password'
=> "example-password"
Now call GitHelper.clone, which will clone and decrypt the repo for you. Assign the return value to workspace, which we'll need later when we re-encrypt:
irb(main):005:0> workspace = Match::GitHelper.clone(git_url, shallow_clone, manual_password: manual_password)
[14:49:30]: Cloning remote git repo...
1. 利用match获取该p12文件对应的证书(certificates)、私有秘钥、预配配置文件(provisioning profiles);
2. 使用gym出一个ipa包;
上面的是我们的构建的步骤,不过在构建的时候还是会遇见一些问题的,以下的便是我们的具体的操作流程;
1. match的话是在给出一个现有的apple id之后match通过这个apple id登录苹果开发者后台,然后根据配置文件生成
* 证书(certificates)
* 预配配置文件(provisioning profiles)
还有一个文件,私有秘钥,那只能是在具体的机器上面的
在生成了这三个文件以后,match除了会让用户设置一个密码,然后安装到现在的机器上面之外,match还会做一件事,就是把那三个文件加密上传到一个git服务器上面。
这样子做会有一个好处,也就说,接下来我想在别的机器上面使用现有的签名,秘钥,预配配置文件的话,只要写入一样的match配置文件,这样以来,我们在第一次运行match这个命令的时候,只要在之后的交互界面输入之前写的密码,就直接可以安装上面所说的三个文件了,这样子的话,就可以满足之后的打包需求了。
下面的是我们的放在fastlane文件夹里面的match的配置文件Matchfile
那其实现在是有一个问题的,我们上面所说的都是在没有那三个文件的基础上生成那三个文件,但是如果现在已经有一个现有的p12文件的话,那我们又应该怎么操作呢?
我们可以分析一下,我们需要的是哪三个文件
1. 证书(certificates)
2. 上面那个证书对应的私有秘钥
3. 预配配置文件(provisioning profiles)
对于某个预配配置文件还有证书的话,我们完全是可以直接在苹果后台直接下载到的
证书
预配配置文件
而秘钥的话,我们其实是可以在p12文件里面分离出来的
可以用下面的手段分离
提取私钥:
openssl pkcs12 -in test.p12 -nocerts -out key.pem
清除秘钥中的密码(在把秘钥部署到某些服务器上时可能需要清除密码)
openssl rsa -in key.pem -out newkey.pem
好了这下子我们就有了上面提到的三个文件
这个三个文件分别对应match的repo底下的三个文件
只不过match的那三个文件和我们这里的三个文件是不一样的
有以下三点不一样
1. 他们的存放路径是不一样的
然后我们看一下match对应的git的repo里面的文件结构
这个是刚刚那个的git repo的文件的目录结构。
注意我把它下载到我电脑上面的【/Users/1q84/Desktop/momo_decrypt_match】的路径底下
对应的远端的repo是【git@git.yodo1.cn:huangchangtao/fastlane-match.git】
下面贴出来的是证书和秘钥文件所在的目录,这里的对应的证书和秘钥是development类型的至于appstore, adhoc, enterprise类型的证书的话是可以以此类推的
2. 它的预配配置文件的命名是有规范的
是根据这个规范命名的
Development_com.featherweightgames.stampede.mobileprovision
其实就是
证书类型_包名.mobileprovision
其中的证书类型的首字母是大写的
而它的存放路径也是放在
比如像
profiles/development
底下的
就比如下下面这个样子。
3. 他们都是被加密过的文件
我们打开看了一下证书文件,以及证书对应的私钥文件,结果发现是被加密过的文件
我们再看一下那个预配配置文件的话
果然,它也是被加密过的
这个的话按照match的文档说明的话,他们应该是根据openssl工具加密过的
2. 好了,现在看看现在我们有什么,以及我们需要做什么
我们有的东西
1. 一个下好的match的repo,不过里面的证书秘钥以及预配配置文件并不是我们想要的,而且他们都是被加密过的文件
2. 我们现在有一个p12文件,并且我们把它的私钥分离出来了,此外我们还到苹果后台下载了证书(certificates)文件,以及预配配置文件(Provisioning Profiles)
我们需要做的东西
1. 把上面提到的三个文件,替换掉现有的repo里面的那三个文件
我们现在遇到的问题
1. 现有repo的文件是加密过的
就举例来说,现在我们现在想要做一个development类型的,包名为com.featherweightgames.stampede的match的话,
我们现在有的是一个现有的repo,这个repo之前设置好的
第一步我们需要解密,之前如果是直接调用match的命令的话是不会有着一步骤的,不过我在网上找了找,其实是有接口支持直接调用match解密的。
下面的阅读步骤是有前提的,前提是我们会在接下来的步骤里面直接操作的是match对应的repo的master分支,还还有我们之前设置的那个repo的密码是123456
好吧,现在贴出手动调用match的解密的ruby接口调用文档
其实很简单,就是调用了下ruby而已
所以其实要进入那个交互界面的话,还是需要我们
先输入指令
https://docs.fastlane.tools/advanced/#manually-manage-the-fastlane-match-repo
$ bundle console
irb(main):001:0>
Then, require match and set the appropriate parameters:
irb(main):001:0> require 'match'
irb(main):002:0> git_url = 'https://github.com/fastlane/example-certificate-repo'
=> "https://github.com/fastlane/example-certificate-repo"
irb(main):003:0> shallow_clone = false
=> false
irb(main):004:0> manual_password = 'example-password'
=> "example-password"
Now call GitHelper.clone, which will clone and decrypt the repo for you. Assign the return value to workspace, which we'll need later when we re-encrypt:
irb(main):005:0> workspace = Match::GitHelper.clone(git_url, shallow_clone, manual_password: manual_password)
[14:49:30]: Cloning remote git repo...
[14:49:31]:
Now call GitHelper.clone, which will clone and decrypt the repo for you. Assign the return value to workspace, which we'll need later when we re-encrypt:
irb(main):005:0> workspace = Match::GitHelper.clone(git_url, shallow_clone, manual_password: manual_password)
[14:49:30]: Cloning remote git repo...
[14:49:31]:
阅读全文
0 0
- Fastlane构建ipa包流程小结 -- match 篇
- Xcode_自动构建ipa包
- iOS打包ipa安装包的流程
- iOS打包ipa安装包的流程
- iOS-Fastlane(安装篇)
- iOS-Fastlane(工具篇)
- Fastlane
- xcode4.3 构建ipa包发布到iphone
- jenkins通过shell脚本持续集成构建IPA包
- Fastlane + Bugly自动化部署测试包
- 生成ipa流程
- iOS 打包ipa流程
- 打包IPA流程
- 用Application Loader 上传ipa包 在iTunes Connect 长时间不显示构建版本
- 打ipa包
- xcode5制作ipa包
- Xcode 打包 ipa 包
- Xcode 打包 ipa 包
- web前端面试知识点总结(1)
- connect 连接超时
- (0069)iOS开发之dequeueReusableCellWithIdentifier的两个方法的区别
- Android知识点整体目录
- 网上流行护眼色的RGB值和颜色代码
- Fastlane构建ipa包流程小结 -- match 篇
- Android 开发之 View.post() 的作用
- 运行script_faster_rcnn_VOC2007_ZF.m出现的错误
- AI 学习之路——轻松初探 Python 篇(一)
- FastJson一些常见方法(API)
- 数据结构实验之图论二:图的深度遍历
- 面向对象--异常
- Spring IOC 源码分析-bean标签解析
- Cannot find System Java Compiler. Ensure that you have installed a JDK (not just a JRE)