自动打包

安装常用工具

1、安装 gym

sudo gem install gym --verbose

2、安装 fastlane

· https://github.com/fastlane/fastlane

sudo gem install fastlane --verbose

3、安装 xctool

· https://github.com/facebook/xctool
· xctool是官方xcodebuild的一个增强实现,输出的内容比xcodebuild直观可读得多

brew install xctool

4、安装fir-cli

· fir的命令行工具

sudo gem install fir-cli --verbose


Gym 打包脚本文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/bash

#计时
SECONDS=0

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

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

#指定项目地址
workspace_path="$project_path/Demo.xcworkspace"
#指定输出路径
output_path="/Users/your_username/Documents/"
#指定输出归档文件地址
archive_path="$output_path/Demo_${now}.xcarchive"
#指定输出ipa地址
ipa_path="$output_path/Demo_${now}.ipa"
#指定输出ipa名称
ipa_name="Demo_${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 打包脚本文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/bash

#计时
SECONDS=0

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

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

#指定项目地址
workspace_path="$project_path/Demo.xcworkspace"
#指定输出路径
output_path="/Users/your_username/Documents/"
#指定输出归档文件地址
archive_path="$output_path/Demo_${now}.xcarchive"
#指定输出ipa地址
ipa_path="$output_path/Demo_${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==="

概念补充

  1. *.workspace 文件
    使用CocoaPods管理的工程在执行完 pod install 之后生成的workspace文件

  2. scheme
    显示在Xcode的左上角,run图标的右边,设备选择的左边

  3. configuration
    在Xcode中选项目,Info tab下会列出所有的configuration,一般有Debug和Release两种

  4. provisioning profile
    在Xcode中选target,在 Build Settings tab 下搜索 Provisioning Profile ,默认应该是 Automatic ,点击看到下拉列表中的就是所有可用的名称


升级 Ruby 版本

1、安装 Rvm (第三方工具)

1
2
$ curl -L get.rvm.io | bash -s stable
$ source ~/.rvm/scripts/rvm

等待终端加载完毕,后输入:

rvm -v

如果显示版本号,则安装成功~

2、安装 Ruby

· 列出所有 Ruby 可安装版本的信息
rvm list known

· 安装一个 Ruby 版本
rvm install 2.1.4

如果想设置为默认版本,可以用这条命令来完成

rvm use 2.1.4 --default

· 查看已安装的 Ruby
rvm list

· 卸载一个已安装 Ruby 版本
rvm remove 2.1.4

3、更换源

· 查看已有源
gem source

· 由于国内被墙,所以我们需要更换源至 淘宝服务器Ruby China

淘宝 https://ruby.taobao.org
Ruby China https://gems.ruby-china.org/

1
2
3
4
$ gem update --system
$ gem uninstall rubygems-update
$ gem sources -r http://rubygems.org/
$ gem sources -a http://ruby.taobao.org

gem 常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ruby -v #查看ruby 版本

ruby -e ''require"watir"; puts Watir::IE::VERSION'' #查看watir版本
gem -v #gem版本
gem update #更新所有包
gem update --system #更新RubyGems软件
gem install rake #安装rake,从本地或远程服务器
gem install rake --remote #安装rake,从远程服务器
gem install watir -v(或者--version) 1.6.2#指定安装版本的
gem uninstall rake #卸载rake包
gem list d #列出本地以d打头的包
gem query -n ''[0-9]'' --local #查找本地含有数字的包
gem search log --both #从本地和远程服务器上查找含有log字符串的包
gem search log --remoter #只从远程服务器上查找含有log字符串的包
gem search -r log #只从远程服务器上查找含有log字符串的包
gem help #提醒式的帮助
gem help install #列出install命令 帮助
gem help examples #列出gem命令使用一些例子
gem build rake.gemspec #把rake.gemspec编译成rake.gem
gem check -v pkg/rake-0.4.0.gem #检测rake是否有效
gem cleanup #清除所有包旧版本,保留最新版本
gem contents rake #显示rake包中所包含的文件
gem dependency rails -v 0.10.1 #列出与rails相互依赖的包
gem environment #查看gem的环境

文章引用

http://www.jianshu.com/p/54ab07f2e63b
http://www.07net01.com/2015/09/933234.html
https://my.oschina.net/u/923974/blog/99060