这个系列的博客分为上下两篇,上篇介绍命令行工具使用,下篇介绍利用Jenkins进行持续化集成

在iOS的开发过程中总是免不了要不停的打包,通常的打包方式是这样的

XCode->Archive->Export

期间还要选择对应的证书与pp文件,进行一次打包会花不少的时间,在打包的过程中你啥都做不了,只能干等着。今天主要介绍利用命令行来解放你的双手,让你在打包的时候能够释放你的双手。

今天分享的内容如下:

  1. xcodebuild指令介绍与使用
  2. 利用shell脚本打包
  3. fastlane介绍与使用

xcodebuild

xcodebuild 指令是苹果官方提供的命令行打包工具,你可以使用此命令来进行clean、build、test、archive。

要查看官方的使用指南,可以通过命令 man xcodebuild来查看

project构建

要构建xcode项目需要在工程所在目录运行xcodebuild指令,如果目录中含有多个preoject的话,就需要使用-project指令来指定需要构建的工程。默认情况下xcodebuild会以工程里默认的configuration来build工程里的第一个target。

workspace构建

要构建workspce,需要设置-workspace与-scheme来定义构建,scheme用于指定要构建的targt以及怎样构建,也可以传递其他参数对scheme进行覆盖。

我们可以通过以下选项来查看工程中的环境

  • -list 查看当前工程的信息,如:target列表、configuration列表、scheme列表,同时能看到默认的configuration
  • -showBuildSettings 查看构建设置
  • -showdestinations 仅对workspace有效
  • -showsdks 查看SDK列表
  • -usage 使用示例
  • -version 查看当前版本

xcodebuild 所有指令默认的configuration都是Release

clean

#清理构建目录 默认的configuration为Release
xcodebuild clean
#也可以指定configuration
xcodebuild clean -configuration Debug

build

### 默认构建
xcodebuild build
### 指定configuration
xcodebuild build -configuration Debug

test

test指令需要指定scheme, 同时还需要指定destination。 可以通过-showdestinations指令来获取可用的destination

xcodebuild -showdestinations -scheme demo_xocdebuild
xcodebuild test -scheme demo_xocdebuild -destination "platform=iOS Simulator,name=iPhone 8"

archive

需要注意的archive时要指定scheme才行

#project的archive
xcodebuild archive -scheme demo_xocdebuild -archivePath test

-exportArchive

此指令用于导出ipa包,必填参数archivePath、exportPath、exportOptionsPlist

### option.plist用于指定打包的method等,此文件可以通过用xcode打包后生成
xcodebuild -exportArchive  -archivePath test.xcarchive -exportPath test   -exportOptionsPlist 'ExportOptions.plist'

利用shell脚本打包

shell脚本示例如下:

#!/bin/sh

### 配置定义
PROJECT_NAME="test"# 获取当前脚本路径
# basepath=$(cd `dirname $0`; pwd)CONFIGURATION="Debug"#工程名
WORKSPACE="demo.xcworkspace"#设置打包路径
PACKAGE_PATH="Package"#archive path
XCARCHIVE_PATH="${PACKAGE_PATH}/xcarchive/${PROJECT_NAME}.xcarchive"#ipa 路径
IPA_Path="${PACKAGE_PATH}/ipa"#ipa名称
IPAFILE_NAME="${PROJECT_NAME}.ipa"#导出ipa路径
EXPORT_PATH="${IPA_Path}/${IPAFILE_NAME}"optionPlistName="ExportOptions_development"# clean
echo "xcodebuild clean"
xcodebuild clean -workspace ${WORKSPACE} \-scheme ${PROJECT_NAME} \-configuration ${CONFIGURATION} \| xcpretty # archive
echo "xcodebuild archive"
xcodebuild archive -workspace ${WORKSPACE} \-scheme ${PROJECT_NAME} \-configuration ${CONFIGURATION} \-destination generic/platform=iOS \-archivePath ${XCARCHIVE_PATH} \| xcpretty # test
xcodebuild  test -workspace ${WORKSPACE} \-scheme ${PROJECT_NAME} \-sdk iphonesimulator \-destination 'platform=iOS Simulator,name=iPhone 8' \| xcpretty # export ipa
echo "xcodebuild exportArchive"
xcodebuild -exportArchive -archivePath ${XCARCHIVE_PATH} \-exportPath ${EXPORT_PATH} \-exportOptionsPlist ${optionPlistName}.plist \-verbose \| xcpretty 

使用方式,将此脚本放到项目路径下,然后执行即可

sh debug.sh

fastlane 使用与介绍

什么是fastlane?

fastlane是可以自动打包iOS和Android项目的第三方工具,通过简单的配置即可完成打包,还有的功能是实现屏幕截图并上传,上传ipa到testflight,上传ipa到app-store。

在这里我就只介绍iOS方面的使用了,首先需要安装fastlane。

安装fastlane

  1. 确定安装了最新的xcode命令行工具
xcode-select --install
  1. 安装fastlane
[sudo] gem install fastlane -NV

使用fastlane

和xcodebuild的使用方式一样,fastlane也需要在项目所有路径使用。首先我们在命令行进入到项目路径,然后初始化fastlane。以下介绍都是基于使用XCode自动创建了证书的情况下来使用,因为这样fastlane自动生成的pp文件才能匹配,否则就需要在gym中显示的指定pp文件。

fastlane init -verbose

初始化后,就可以变成fastlane命令了 示例如下

default_platform(:ios)platform :ios dodesc "Description of what the lane does"lane :test doscan(# workspace: "FinupCredit.xcworkspace",# scheme: "test",devices: ["iPhone 8 Plus"],)endlane :beta do |values|scan(# workspace: "FinupCredit.xcworkspace",devices: ["iPhone 8 Plus"],)v = values[:i]time = Time.new.strftime("%Y%m%d")version = get_version_numberipaName = "debug_#{version}_#{time}_V_#{v}.ipa"gym(clean: true,configuration: "Debug",export_method: "development",output_directory: "./Debug",output_name:  "#{ipaName}",)endlane :release do |values|scan(# workspace: "FinupCredit.xcworkspace",devices: ["iPhone 8 Plus"],)v = values[:i]time = Time.new.strftime("%Y%m%d")version = get_version_numberipaName = "release_#{version}_#{time}_V_#{v}.ipa"gym(clean: true,configuration: "Release",export_method: "app-store",output_directory: "./Release",output_name:  "#{ipaName}",)end
end

在这里scan和gym分别是fastlane提供的两个action,scan的作用是执行项目中的单元测试,gym则是用来打包的。在这个脚本中我们允许传入变量,用来生成ipa名称。

gym中的。。。也可以指定plist文件,使用方式如下

desc "使用opetionPlist来指定打包配置"lane :useOptionPlist do |values|scan(# workspace: "FinupCredit.xcworkspace",devices: ["iPhone 8 Plus"],)v = values[:i]time = Time.new.strftime("%Y%m%d")version = get_version_numberipaName = "debug_#{version}_#{time}_V_#{v}.ipa"gym(clean: true,configuration: "Release",export_method: "development",output_directory: "./Release",output_name:  "#{ipaName}",#指定plist路径export_options: "./ExportOptions_app_store.plist" )end

转载于:https://www.cnblogs.com/pretty-guy/p/9525548.html

【iOS】史上最全的iOS持续集成教程 (上)相关推荐

  1. 史上最全的iOS面试题及答案

    史上最全的iOS面试题及答案 1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encodin ...

  2. 史上最全面的python学生管理系统教程(二)

    目录 序言 sqlite使用教程 python sqlite使用教程 数据库构造 学生信息表结构: 教师信息表结构: 课程成绩表结构: 教师添加课程: 学生表连接课程成绩表: 数据库语句了解 sqli ...

  3. 在CentOS7上安装Drone搭建CI持续集成环境

    文章目录 在CentOS7上安装Drone搭建CI持续集成环境 前言 安装前规划 安装过程 配置域名解析 安装Docker 拉取Drone Server镜像 添加GitHub OAuth Applic ...

  4. python 持续集成 教程_jenkins+python自动化测试持续集成教程

    一.首先我们安装Jenkins,我这里采用的是.msi应用程序,根据提示进行安装(傻瓜式),最后会打开默认的网页地址:http://localhost:8080 如果端口有冲突,可以去Jenkins的 ...

  5. 史上最全的 iOS 各种测试工具集锦

    引言: 随着移动互联网的兴起,APP 测试的越来越被重视!Android 系统因为自己的开源性,测试工具和测试方法比较广为流传,但是 iOS 系统的私密性,导致很多测试的执行都有点麻烦. 为了帮助大家 ...

  6. 新手必看,史上最全的iOS开发教程集锦,没有之一!

    最近大火的iPhone XS Max和iPhone XS,不知道有没有同学已经下手了呢?一万三的价位确实让很多人望而却步啊.据说为了赢得中国的用户,专门出了双卡双待的,可想而知中国市场这块" ...

  7. 史上最全Java面试题全集(上)

    转载自 Java面试题全集(上)!(速度收藏) 2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有 ...

  8. iOS开发笔记--超全!iOS 面试题汇总

    作者:Job_Yang 之前看了很多面试题,感觉要不是不够就是过于冗余,于是我将网上的一些面试题进行了删减和重排,现在分享给大家.(题目来源于网络,侵删) Object-c的类可以多重继承么?可以实现 ...

  9. 史上最全的Android开发学习教程集锦【初学者】

    根据Google的报告,截止2017年5月为止,Android活跃用户已超过20亿,并还在持续增长中.Android系统在几个主要的市场上已超过了iOS系统,特别是在美国,欧洲和日本,然而苹果确实在中 ...

  10. 在 CentOS 7 上搭建 Jenkins + Maven + Git 持续集成环境

    本文以部署 Spring boot + Maven 项目为例,使用码云作为代码托管仓库,在 CentOS 7 上搭建 Jenkins 持续集成环境. 1. 准备工作 1.1 安装 Java 环境 Je ...

最新文章

  1. Ural 1018 (树形DP+背包+优化)
  2. 解决任务计划程序未启动任务,因为相同任务的实例正在运行的问题
  3. cortex-M3 的SVC、PendSV异常,与操作系统(ucos实时系统)
  4. wpf将文字转化为图形_工程师们开发出将天然气转化为固体的方法
  5. 计算机技术博客博客知乎,我的技术博客的选择:CSDN、博客园、简书、知乎专栏仍是Github Page?...
  6. 日志存储 elasticsearch vs clickhouse
  7. [Tool] SourceTree初始化GitFlow遇到错误(git command not found)的解决方案
  8. 数模美赛准备——Numpy
  9. windows winrar 指令_WinRAR命令行参数整理
  10. 启发式搜索--八数码问题
  11. mysql 只有一个ibd文件_只有一个ibd文件如何恢复数据表
  12. web页面播放实时视频流
  13. wpf 窗体翻页效果
  14. 第十二章 牛市股票还会亏钱-外观模式(读书笔记)
  15. 【调剂】黑龙江大学电子工程学院-王国涛副教授课题组招收2021级硕士研究生(调剂生)...
  16. 腾讯游戏开发工程师:Linux 机器 CPU 毛刺问题排查
  17. 研发管理--测试绩效管理
  18. 观察者模式——应聘者和应聘公司的关系
  19. 团队-中国象棋游戏-模块测试过程
  20. 我的世界服务器修改武器合成表,我的世界武器合成表大全 我的世界武器怎么合成...

热门文章

  1. Altera Quartus 13.1 仿真工具路径错误问题解决 Can‘t launch the ModelSim-Altera software
  2. QT语言家实现软件中英文切换
  3. 学业水平考试计算机成绩查询入口,2018广东学业水平考试成绩查询入口
  4. 【MySQL】内连接,外连接,自连接(详解)
  5. 火影推荐程序连载23-Robot Framework自动化测试框架核心指南-如何做好自动化测试平台框架的设计
  6. uniapp开发app下载模板功能
  7. 微信群发红包原理 计算机,微信红包群发中隐藏着一个很多人不知道的小秘密...
  8. 多人对战游戏开发实例之《组队小鸡射击》(附源码)
  9. 我的世界java版启动失败或闪退_我的世界无法正常启动、崩溃(Crash)等常见问题...
  10. Laravel Mix