前言
项目开发中,经常需要给测试和产品提供最新的改动成果,如果每次都在xcode上给他们手动安装app会浪费大量的开发时间。使用fastlane自动打包到蒲公英上,然后让他们自己下载最新的包可以节省自己的开发时间。下面将会介绍从安装开发工具到打包的具体过程。
安装fastlane
1.确保安装了最新的xcode命令行工具
使用xcode-select --install
命令进行安装会弹出如下提示,按照提示安装即可
xcode命令行工具提供了xcodebuild、xcrun等自建打包命令工具,纯手动编译打包和发布将消耗大量的时间,fastlane将这些步骤集成在一个命令里。
2.确保安装了gem
命令行工具,可以通过gem -v
查看gem
版本
3.使用[sudo] gem install fastlane -NV
安装faslane
4.进入你的项目根目录,输入fastlane init
初始化fastlane
fastlane会提示我们使用它做什么:
选项1:自动截图。手动截图并将处理好后的图片发布到测试或线上平台上需要消耗大量的时间,fastlane可以简化这一步。(目前还没有测试这一选项,因为暂时没用到这个功能)
选项2:将测试包发布到TestFlight。
选项3:自动发布到App Store。
选项4:手动设置(自定义发布平台)。
这里我们选择选项4。因为,我们需要将测试app提交到蒲公英。
如果在fastlane init
的时候,卡在下图很久,可以先中断bundle update
步骤(control+c),然后使用gem cleanup
,再尝试使用fastlane init
安装和配置蒲公英
1.通过fastlane add_plugin pgyer
安装蒲公英插件
2.编写项目目录下的Fastfile
文件如下
default_platform(:ios)
platform :ios do
desc "fastlane 打包上传到蒲公英"
sh "./build.sh"
lane :fsv_pgyer do
build_app(export_method: "ad-hoc",
workspace: "项目.xcworkspace",
scheme: "scheme")
pgyer(api_key: "api_key", user_key: "user_key")
end
end
现在就可以尝试使用fastlane fsv_pgyer
快速打包了,但是在打包的时候,我们遇到一个问题,每次我们修改项目完后,我们需要修改一下build号,然后才能在终端中打包。
为了解决上述问题,我们创建了一个shell脚本文件,将shell脚本填写在如下如位置。
脚本如下:
# plist路径
infoPlist=plist路径
# 获取当前build号
buildCurrentNum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" ${infoPlist})
lastVersion='01'
currentData=$(date +%y%m%d)
lastBuildNumber=""
if [ ${#buildCurrentNum} -lt 8 ];then
lastBuildNumber=${currentData}$lastVersion
else
# 截取时间 18051701 -> 180517 来个今天的时间做比较
currentDate=${buildCurrentNum:0:6}
lastVersion=${buildCurrentNum:6}
# 判断xcode的日期是否和当前日期相同
if [ $currentDate == $currentData ];then
# 相同的话build + 1
versionI=$((10#${lastVersion}+1))
lastVersion=$(printf "%02d" $versionI)
else
# 不相同的话build为1
lastVersion="01"
fi
lastBuildNumber=${currentData}$lastVersion
fi
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $lastBuildNumber" ${infoPlist}
如果编译的时候报脚本权限错误,可以使用chmod 777 脚本文件
修改该文件权限。
这样每次使用命令打包时,都会自动修改build号。
3.pgyer中的api_key
和user_key
可以在自己的应用->API中查看
使用dotenv
配置参数
上述虽然打包成功,但是Fastfile文件
不能复用。如果创建一个新的项目或者项目有多个targets时,编译的时候又需要在Fastfile文件中
填写一次完整的workspace
、scheme
等等信息。如果能将这些参数写在一个环境配置文件中,只修改一次该环境配置文件,可以方便很多事情。引入了dotenv
就可以达到该目的。
1.使用[sudo] gem install dotenv
,或者在Gemfile
文件中引入你自己的dotenv文件。
2.添加一个.env.default
文件,并在该文件中写入你的配置项,如:
FSVWORKSPACE="我的workspace文件名"
FSVSHEOME="我要编译的scheme"
fastlane会自动将.env.default
文件加载到环境配置中,我们可以直接在fastfile文件中直接使用。
3.使用.env文件
配置完上述项,就可以使用fastlane fsv_pgyer
进行打包提交到蒲公英了。
项目中常见错误
1.Couldn't find specified scheme ...
但是使用命令
xcodebuild -workspace 项目.xcodeproj -list
可以看到项目是包含Schemes的解决的方法是 项目 -> manager schemes -> shared 勾选
2.如果项目打包环境配置错误也会报错。
参考文档:
项目配置文件地址:github