自动化打包

最近在尝试自动化打包,毕竟每次xcode打包还是挺麻烦的

网上有很多教程,选择适合自己的需求的就好


facebook 的xctool

fastlane 的gym

集成Jenkins的(我的需求没那么高,只是要自动化打包和上传fir而已)


自然也就有着不同的准备工作的咯

安装工具

因为系统更新到eicapitain,所以很多同学用HomeBrew或者gym 安装工具的时候都可能会出现Permition denied 的提示

两种方法:

1 去掉系统的rootless的设置

2 我的做法,安装的时候指定目录

brew install xctool(xctool)

gem install -n /usr/local/bin gym(fastlane)

gem install -n /usr/local/bin fir-cli(fir 上传)

安装好这些工具,就可以开始尝试先用xcode打一次包,确认的证书和provison文件是对的


fastlane 的打包脚本

#!/bin/bash

#计时
SECONDS=0

#假设脚本放置在与项目相同的路径下
project_path=$(pwd)
#取当前时间字符串添加到文件结尾
now=$(date +"%Y_%m_%d_%H_%M_%S")

#指定项目的scheme名称
scheme="tete"
#指定要打包的配置名
configuration="development"
#指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development, 和developer-id,即xcodebuild的method参数
export_method='development'

#指定项目地址
workspace_path="$project_path/tete.xcworkspace"
#指定输出路径
output_path="/Users/chengxun/Desktop/"
#指定输出归档文件地址
archive_path="$output_path/tete_${now}.xcarchive"
#指定输出ipa地址
ipa_path="$output_path/tete_${now}.ipa"
#指定输出ipa名称
ipa_name="tete_${now}.ipa"
#获取执行命令时的commit message
commit_msg="$1"

#输出设定的变量值
echo "===workspace path: ${workspace_path}==="
echo "===archive path: ${archive_path}==="
echo "===ipa path: ${ipa_path}==="
echo "===export method: ${export_method}==="
echo "===commit msg: $1==="

#先清空前一次build
gym --workspace ${workspace_path} --scheme ${scheme} --clean --configuration ${configuration} --archive_path ${archive_path} --export_method ${export_method} --output_directory ${output_path} --output_name ${ipa_name}

#上传到fir
fir publish ${ipa_path} -T fir_token -c "${commit_msg}"

#输出总用时
echo "===Finished. Total time: ${SECONDS}s==="

xctool的打包脚本

#!/bin/bash

#计时
SECONDS=0

#假设脚本放置在与项目相同的路径下
project_path=$(pwd)
#取当前时间字符串添加到文件结尾
now=$(date +"%Y_%m_%d_%H_%M_%S")

#指定项目的scheme名称
scheme="tete"
#指定要打包的配置名
configuration="Adhoc"
#指定打包所使用的provisioning profile名称
provisioning_profile='qiaoshouteteIdentifier'

#指定项目地址
workspace_path="$project_path/tete.xcworkspace"
#指定输出路径
output_path="/Users/chengxun/Desktop/"
#指定输出归档文件地址
archive_path="$output_path/tete${now}.xcarchive"
#指定输出ipa地址
ipa_path="$output_path/tete_${now}.ipa"
#获取执行命令时的commit message
commit_msg="$1"

#输出设定的变量值
echo "===workspace path: ${workspace_path}==="
echo "===archive path: ${archive_path}==="
echo "===ipa path: ${ipa_path}==="
echo "===profile: ${provisioning_profile}==="
echo "===commit msg: $1==="

#先清空前一次build
xctool clean -workspace ${workspace_path} -scheme ${scheme} -configuration ${configuration}

#根据指定的项目、scheme、configuration与输出路径打包出archive文件
xctool build -workspace ${workspace_path} -scheme ${scheme} -configuration ${configuration} archive -archivePath ${archive_path}

#使用指定的provisioning profile导出ipa
#我暂时没找到xctool指定provisioning profile的方法,所以这里用了xcodebuild
xcodebuild -exportArchive -archivePath ${archive_path} -exportPath ${ipa_path} -exportFormat ipa -exportProvisioningProfile "${provisioning_profile}"

#上传到fir
#fir publish ${ipa_path} -T fir_token -c "${commit_msg}"

#输出总用时
echo "===Finished. Total time: ${SECONDS}s==="

对比下两者

fastlane gym: 1 速度快 2 有dysm文件 3 不用指定provison文件

xctool: 相比下就要弱一些咯 看图就知道咯

自动化打包_第1张图片
自动化打包_第2张图片

你可能感兴趣的:(自动化打包)