iOS Fastlane自动化打包并上传Fir
注意:Mac + iTerm2作为基本工具。
1、检查Mac是否已经安装ruby:
终端或者iTerm执行命令行:ruby -v
如果没有安装,则去安装ruby;已经安装的情况下会展示当前ruby的版本,如图Image-01所示:
Image-012、检查本地是否安装Xcode命令行工具:
终端或者iTerm执行命令行:xcode-select --install
如果报错:
Image-02则说明已经安装过。
3、安装fastlane:
Image-03终端或者iTerm执行命令行:sudo gem install fastlane
则代表安装完成。
4、切换到工程所在目录进行fastlane初始化:
终端或者ITerm执行命令行:fastlane init
会出现如下图提示:
Image-04第1个选项的意思是:自动截屏。 这个功能能帮我们自动截取APP中的截图;
第2个选项的意思是:自动发布beta版本用于TestFlight;
第3个选项的意思是:自动发布到AppStore;
第4个选项的意思是:手动设置。
这里我选择第四个:手动设置。
然后等待初始化安装依赖:
Image-05根据提示,需要点击键盘上"enter"键三次,即完成初始化。
5、初始化完成之后,回到工程目录,会发现多了Gemfile文件、Gemfile.lock文件和fastlane文件夹,其中fastlane文件夹中包含Appfile和Fastfile两个文件。
在Appfile文件里做如下配置:
Image-06在Fastfile文件里做如下配置:
default_platform(:ios)
platform :ios do
desc "Submit a new adhoc version to fir" ### 这里可以任意定制desc描述
lane :adhoc do ### adhoc 当前fastlane任务的lane名,可以定制
gym(scheme: "123", ### 这里”123”指的是项目名称
workspace: "123.xcworkspace", ### 这里用当前项目对应的xcworkspace
include_bitcode: true,
configuration: "Release",
export_method: "ad-hoc", ### 好几种方式有app-store,ad-hoc,development,enterprise
output_directory: "导出ipa包的位置", ### 可以定制到自己想要的位置
output_name: "导出ipa包的包名", ### 可以定制自己想要的包名称
silent: false,
include_symbols: true)
#上传ipa至fir.im服务器
firim(firim_api_token: "fir-api-token") ### 这里fir-api-token指的是fir.im上面的token
end
这里需要注意:如果仅仅是自动打出包,而不需要上传至fir,那么
Image-07这一块可以直接去掉;但如果想打包完直接上传至fir,还需要在项目目录下,用终端或者iTerm执行命令行:
fastlane add_plugin firim ##安装fir插件
gem install fir-cli ##自动上传fir
然后再执行命令:bundle exec fastlane adhoc(adhoc 是Fastfile 里的lane名)即完成打包+上传fir。
踩坑记录:
a、如果项目用cocoapods管理,仅在配置fastfile文件里加上cocoapods,运行fastlane会报错:
Image-08需要在Gemfile文件里补充"gem cocoapods":
Image-09之后再重新运行:
bundle exec fastlane adhoc(adhoc为运行fastlane的lane名)
b、报错说找不到"firim":
Could not find action, lane or variable 'firim'. Check out the documentation for more details: https://docs.fastlane.tools/actions
重新安装一下fir插件即可:
bundle exec fastlane add_plugin firim
c、上传至fir的包,看不到icon和更新日志:
在当前目录下,执行命令行:firim --help 查找当前可以支持的命令
Image-10可以看到,红框所标记为咱们需要的命令,稍微注意下图片格式为jpg。
将上传fir脚本改为:
firim(firim_api_token: "你的fir Token", icon: "本地路径icon.jpg", app_changelog: "1、更新描述第一段测试;\n2、更新描述第二段测试。")
效果如下:
Image-11参考链接: