基于Lexrus的博文iOS-makefile,本文对自动打包涉及到的操作步骤以及理论基础进行了适当的补充。

    请在阅读本文前先阅读《iOS makefile》。文章地址:http://lextang.com/ios-makefile

首先我们从个文件:makefile脚本文件和makefile.cfg脚本配置文件。makefile.cfg主要用来填写待打包项目的有关信息,包括项目名、workspace、configuration、Scheme。Xcode默认的configuration包括Debug和Release。你可以在project文件的Info->configuration标签下对设置一个InHouse或AdHoc的config。makefile脚本在当前目录会搜索.cfg文件并导入,所以在运行打包命令前,需要确保这两个文件是在同一个目录内。

iOS makefile的当前版本暂只支持workspace,所以没有使用workspace的项目打包就会报错。如果你的project并没有使用workspace进行组织,那么你可以在Xcode中将当前project另存为workspace以创建workspace文档。你可以通过选择Xcode的File->Save As Workspace,然后将workspace文档保存到项目根目录下;你也可以单独创建一个workspace文档,然后在Project Navigator中右击,选择add file to "yourWorkspace",选择你需要添加的扩展名为.xcodeproj的project文件后,project就被加入到你的新workspace中了。

workspace是xcode 4.0引入的新特性,表面上它就是一个Xcode文档,文档指向当前workspace包含的project和其他的文件,但不包括数据。workspace和project之间是多对多的拥有关系。一个workspace可以包含多个项目,一个项目可以被多个workspace包含。如果在workspace中的一个A project拥有一个静态库,该静态库被当前同在workspace中B project链接引用。那么Xcode将在构建B project之前自动构建该静态库。即使B project的构建配置没有对链接库做显式的依赖。在Java中一个完整的构件过程包括:生成代码(相当于iOS中使用了ARC,会自动插入retain/release代码)、编译源文件、编译测试源文件、执行测试(单元测试,集成测试)、打包(生成jar,war,ejb-jar,ear)、运行健康检查(静态分析器,如Checkstyle,Findbugs,FMD,测试覆盖率,等等)、生成报告。(iOS的构建阶段包括:编译源文件、链接二进制文件和库(二进制文件是指那些已经被编译好的框架代码)、拷贝束资源。)使用workspace的另一个好处是如果多个项目使用同一个库,使用workspace不需要为每个项目都拷贝一份静态库文件(基于安全考虑,苹果不允许使用动态库,使用动态库apple store会拒绝你应用的上架申请。动态库犹似一个潘多拉盒,它可以在运行时被加载与卸载,你可以下载新的代码并执行。对于开发in-house的应用,技术上是可行的,事实上是苹果不允许apple store上架应用使用动态链接库,而操作系统一定是支持动态链接库的,越狱app就是利用的操作系统上的支持技术)。

那么静态库、动态库、框架三者之间有什么区别呢,静态库是一个代码单元,它在编译时被链接,且不可以发生改变。iOS静态库只能是代码,不可以是媒体资源,你可以使用media bundle添加媒体资源。动态库可以是代码单元或资源单元,它在运行时被链接,可以发生改变。只有苹果公司可以为iOS创建动态库。框架是一个已经编译好的代码集合,所以无法看到源代码,而静态库是可以看到所有的源代码。框架可分为静态框架和动态框架。你可以使用很多方法创建自己的静态框架,静态库构件工具:https://github.com/jverkoey/iOS-Framework

iOS makefile脚本发送邮件功能使用的是第三方邮件服务Mailgun,使用Mailgun提供的API接口可以以编程的方式控制发送邮件的发送、接收、转发、邮件追踪。为了配置Mailgun的邮件列表和邮件域名。我们需要创建一个邮件域名和邮件列表,邮件域名可以选择自己的域名或者使用Mailgun的二级域名。邮件列表就是一个收件人邮件地址集合。我们将需要接收打包结果的邮箱录入邮件列表中。自动打包脚本不是将Mailgun的api key直接以明文的方式写在脚本中,而是读取keychain访问邮件的api key。所以在发送邮件之前,我们需要将得到的Maingun的Api key存入keychain中。打开keychain access,在分类下选择密码,点击底部的+号,注意keychain Item Name要和脚本配置文件要求的要一致,否则脚本访问不到密码,密码使用Mailgun的api key。配置界面如下图所示:

keyChain中配置API Key

.cfg配置实例参考

如下图所示,打包成功之后,可以选择iMessage或email的方式做OTA分发给测试人员,测试人员可以点击链接下载或扫描二维码进行安装,非常的方便。

发送iMessage消息进行安装

                  

用我查查扫描邮件中二维码进行安装                               前往选择安装

自动打包iOS项目的更多相关文章

  1. docker 运行jenkins及vue项目与springboot项目(三.jenkins的使用及自动打包vue项目)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  2. xcodebuild和xcrun实现自动打包iOS应用程序

    随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱越来越多的app 的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,本文提供一种比较智能的打包方式来减少其带来的各 ...

  3. 解放双手 | Jenkins + gitlab + maven 自动打包部署项目

    前言 记录 Jenkins + gitlab + maven 自动打包部署后端项目详细过程! 需求背景 不会偷懒的程序员不是好码农,传统的项目部署,有时候采用本地手动打包,再通过ssh传到服务器部署运 ...

  4. Unity3D 自动打包整个项目(以AssetBundle实现)

    原地址:http://blog.csdn.net/huang7jiao/article/details/18370653 需求: 在移动开发中,手动控制资源的加载.释放和热更新,是很有必要的. 而Un ...

  5. jenkins自动打包部署项目

    首先去jenkins的官网下载安装包 https://jenkins.io/   个人下载是长期稳定的那个版本,下载后,得到一个.msi的安装包: 点击进行安装,然后一直点击下一步. jenkins会 ...

  6. docker 运行jenkins及vue项目与springboot项目(二.docker运行jenkins为自动打包运行做准备)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  7. iOS 本地自动打包工具

    1.为什么要自动打包工具? 每修改一个问题,测试都让你打包一个上传fir , 你要clean -> 编译打包 -> 上传fir -> 通知测试.而且打包速度好慢,太浪费时间了.如果有 ...

  8. ios自动打包-fastlane 安装、使用、更新和卸载

    ios自动打包使用fastlane 1.首先安装xcode 首先检查是否已经安装 Xcode 命令行工具,fastlane 使用 xcodebuild 命令进行打包,运行 xcode-select - ...

  9. 40、IOS自动打包-Python脚本

    第一种:基于编译的打包 编译工程--找到.app文件--新建Payload文件夹--拷贝.app到Payload文件夹--压缩成zip--更改后缀名为ipa--完成! 第二种(有问题,暂时不需要看) ...

随机推荐

  1. KVM虚拟机CPU说明

    废话不多说了,下面对kvm虚拟机的CPU说明做一梳理:NUMA技术介绍NUMA是一种解决多CPU共同工作的技术方案,我们先回顾下多CPU共同工作的技术架构历史.多CPU共同工作主要有三种架构,分别是S ...

  2. cocoaPod相关问题

    cocoap简介: 1. 简介 CocoaPods是一个负责管理iOS项目中第三方开源代码的工具,其源码在Github上开源.使用CocoaPods可以节省设置和更新第三方开源库的时间并提高工作效率. ...

  3. readLine读取socket流的时候产生了阻塞

    BufferedReader的readLine方法,只要读到流结束或者流关闭,就会返回null 在读取文件的时候,文件结尾就是流的结尾,但对于Socket而言不是的.不能认为流中数据读完了就是流的结尾 ...

  4. vim常用命令汇总

    vim常用命令汇总: http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html 定位 本行第一个字符 ctrl+$ ...

  5. OSGEARTH三维地形开源项目

    第一章   OSGEarth介绍 第二章   OSGEarth编译环境配置 OSGEarth的编译环境配置随着版本的不同.运行平台的不同,也有很大的差异.本章主要以Windows XP SP3(x86 ...

  6. Backbone源码分析-Backbone架构+流程图

    作者:nuysoft/高云/nuysoft@gmail.com 声明:本文为原创文章,如需转载,请注明来源并保留原文链接. Backbone0.9.1源码分析分析系列 jQuery1.6.1源码分析系 ...

  7. 【高清未加密】2015传智播客 最新21期c#asp.net 基础到就业班视频和源码

    [.NET]传智播客第[21]期就业班视频(高清无加密)本套2015年21期传智播客C#ASP.NET win10通用mvc+app开发视频教程附源码,是一套非常不错的asp.net自学视频教程,传智 ...

  8. 北京联想招聘-IOS高级 加入qq 群:220486180 或者直接在此 留言咨询

    ios 高级开发 Job ID #: 47980 Position Title: 高级iOS development engineer Location: CHN-Beijing Functional ...

  9. LeetCode:Pascal's Triangle I II

    LeetCode:Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For examp ...

  10. 20135335郝爽 & 20135304刘世鹏 实验一

    北京电子科技学院(BESTI) 实     验    报     告 课程: 密码系统设计基础                                                      ...