文档章节

iOS项目自动打包(一)

烦恼的大胖
 烦恼的大胖
发布于 2016/04/27 08:42
字数 1021
阅读 123
收藏 4

开始

一切的一切都源自于“懒”,iOS开发过程中固定时间版本Release发布,自己手动Xcode Archive一下也不觉得什么,但临时的QA来要求测试,会令我这种“易烦躁”的开发者觉得麻烦,甚至也可能打断我当前的手头工作,因为极有可能你代码撸了一半未测试及未提交,却需要打包一个版本库中小修小改的版本。所以只能遍寻方法来解决这种问题,解脱自己。

其实无论哪种你希望开发不受打扰的打包方式,前提都是你需要另一台专门的 Mac 打包设备。

大致亲测了三种打包方式: Jenkins + Xcode plugin, Mac OSX Server + Xcode Bot, Shell命令脚本,这里大致记录下其中的一些过程和坑。

Jenkins + Xcode plugin

安装 Jenkins , 两种方式: 官网下载pkg 或 brew, 这里我直接用 brew 安装的

安装完成之后,直接终端里 jenkins 就能启动,默认端口 8080,你可以在 safari 中通过 http://localhost:8080/ 来进行访问

如果需要停止 Jenkins 服务的话,可以直接通过访问 http://localhost:8080/exit 来完成

接下来说到 Jenkins 的配置: 需要在 Manage Jenkins 中的 Manage Plugins 查找并安装 Git plugin, Keychains and Provisioning Profiles Management, Xcode integration</p>

之后还是在 Manage Jenkins 下 会有Keychains and Provisioning Profiles Management 这是一个证书管理工具,你需要将一些打包所需要的证书信息(包括你钥匙圈中证书所属的keychain以及provision)添加到这里

Keychains and Provisioning Profiles Management 1 Keychains and Provisioning Profiles Management 2

随后开始创建项目,之前添加的 Git plugin 信息,如图:

Git Plugin configure Build Environment 中的 Keychains and Code Signing Identifies 对应选择之前在 Keychains and Provisioning Profiles Management 中 添加的对应信息,如图: Keychains and Code Signing Identifies Mobile Provision Profile 中对应选择之前在 Keychains and Provisioning Profiles Management 中 添加的对应信息,如图:

Mobile Provision Profile Xcode 部分按照自己的需求勾选填写自己的项目信息,值得注意的是,项目中有Cocoapods,一定要填写 workspace 的 xcworkspace 文件(我的项目Git中是带有Pods文件夹的,如果只带有Podfile文件,而忽略Pods文件夹的话,还需要 Add build step 中添加 Execute shell来执行对应的pod install 或 update 等操作),如图:

Xcode plugin Xcode plugin Xcode plugin

至此,Jenkins的配置部分基本就结束了,这里值得注意的有几点:

  • 我的项目Git中是带有Pods文件夹的,如果只带有Podfile文件,而忽略Pods文件夹的话,还需要 Add build step 中添加 Execute shell来执行对应的pod install 或 update 等操作
  • login.keychain 所在目录是 ~/Library/Keychains/ 并且检查你所使用的 Certificate 属于该 Keychain,当然你也可以新建一个 keychain 将证书添加进去

接下来讲两个Xcode中会遇到的问题:>

  • 因为之前都是利用Xcode手动打包的,所以几乎Schemes中的Shared都未选中,但苹果的文档中似乎提到了在使用Xcode Server之类的automatic integration时需要勾选Shared(Sharing Schemes)

Sharing Schemes

Code Signing Resource Rules Path

这里我并没有去做和蒲公英或Fir的集成,如果有需要可以看一下下面两篇参考:

本文转载自:http://xu01.github.io/ios/2016/04/26/iOS-release-automation.html

烦恼的大胖
粉丝 7
博文 22
码字总数 3095
作品 0
闸北
高级程序员
私信 提问
【Flutter】如何写一个Flutter自动打包成iOS代码模块的脚本

相信很多使用原生+Flutter的iOS项目都会遇到混合开发的集成问题,也有大神写了一些解决方案,下面就记录一下我的心路历程: 前期准备 开始之前,我先拜读了一些大神的文章(这里只挑出对我帮...

gzhongcheng
06/05
0
0
2018-11-06 "libswiftRemoteMirror.dylib"导致iOS应用提交失败

最近提交iOS Application到Test Flight的时候遇到这个奇怪的错误: 说是应用包内多了这个"libswiftRemoteMirror.dylib"的文件,打开应用程序包后,的确发现多了很多 开头的类包: 你会看到,...

雨_树
2018/11/06
0
0
Genesis-3D新手入门——14.发布到iOS平台

发布到iOS平台 在游戏制作完毕后,需要进行平台打包才能最终发布。Genesis-3D是一个可以支持很多平台的编辑器,这一篇我们就来学习如何让你把制作出的游戏在iOS平台上运行。 准备步骤 1.注册...

lengche
2014/02/20
38
0
iOS APP真机调试测试详细步骤(2019.6.28)

真机调试分5步进行介绍! (上架前一定要先测试好APP,要不app一堆bug,上架也审核不过,浪费时间) 1、安装iOS上架辅助软件Appuploader 2、登录Appuploader申请iOS开发证书文件p12 3、登录A...

qtb999
06/28
169
0
Flutter完整开发实战详解(三、 打包与填坑篇)

作为系列文章的第三篇,继篇章一和篇章二之后,本篇将为你着重展示:Flutter开发过程的打包流程、APP包对比、细节技巧与问题处理。本篇主要描述的Flutter的打包、在开发过程中遇到的各类问题...

恋猫月亮
2018/08/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JavaScript权威指南笔记3-2

第三章、类型、值和变量 2、文本 I-1 字符串 是一组由16位值组成的不可变的有序序列。 每一个字符来自Unicode字符集 用来表示文本 长度是其所含16位值的个数。 和数组一样,索引从0开始。 JS...

_Somuns
9分钟前
1
0
Spring StateMahcine State 配置详解

状态机包含一系列各种关系的状态,最简单的关系,就是经过状态A事件E直接到状态B,当然还有选择关系,层级关系等等。该篇介绍Spring 状态机 状态的配置。我们知道可以通过方法configure(Sta...

microservice
10分钟前
2
0
基于 HTML5 Canvas 实现的文字动画特效

前言 文字是网页中最基本的元素,一般我们在网页上都是展示的静态文字,但是就效果来说,还是比较枯燥的。文字淡入淡出的动画效果在项目中非常实用,如果有某些关键的文字,可以通过这种动态...

htdaydayup
17分钟前
2
0
2019 年 Java 开发者生态报告!

数据来源自国外的一个调查,在过去的几周,这份调查一共采访了6707名开发人员。数据来源:https://www.baeldung.com/java-in-2019。 1.JDK 版本使用情况 即使在今天 Java 13 都已经发布了,J...

SnailClimb
17分钟前
2
0
支撑微博亿级社交平台,小白也能玩转Redis集群(原理篇)

Redis作为一款性能优异的内存数据库,支撑着微博亿级社交平台,也成为很多互联网公司的标配。这里将以Redis Cluster集群为核心,基于最新的Redis5版本,从原理再到实战,玩转Redis集群 常见R...

分布式系统架构
25分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部