需求:实现自动打包并发布
方案:使用fastlane实现adhoc和inhouse两个版本的自动打包,使用fir.im平台实现上传和下载
使用fastlane实现自动打包
fastlane基本介绍及下载安装这里就不讲了,官方文档已经讲的很清楚了,这里直接开始实践。
首先实现adhoc版本的打包
根据官方的指引,安装完fastlane后到达网页,通过简单的配置生成一个最简单的Fastfile放到项目根目录的fastlane文件夹下。如图:
生成的Fastfile主要内容如下:
lane :beta do
cocoapods
increment_build_number
# build your iOS app
gym(
# scheme: "YourScheme"
)
end
根据我们的需求,做些修改:将beta改成adhoc,添加scheme等配置如下:
lane :adhoc do
gym(
scheme: "YourScheme”,
output_directory: "adhocipa", #输出ipa目录
output_name: "adhoc.ipa", #输出ipa文件名
use_legacy_build_api: true
)
end
关于证书的配置,到本篇文章撰写时,已经使用xcode8开发,fastlane可以很智能的匹配xcode中配置的证书和授权文件,可以参考Setting up your Xcode Project.
总之:在xcode上配置好证书后我们不需要做任何其他事情。
你可以使用Automatically manage signing如图:
也可以手动指定证书和授权文件,如图:
此时在控制台输入:
fastlane adhoc
即可打包成功
下面实现inhouse版本的打包
要实现inhouse版本的打包,我们需要修改项目的Bundle ID,并且重新指定证书和授权文件,fastlane提供了很多方法来签名,具体需要好好查看文档,像action中的project和code-sign等等。
这里我们采用一种偷懒的方法,使用resign,具体脚本如下:
lane :inhouse do
outputdirectory = "inhouseipa"
outputname = "inhouse.ipa"
gym(
scheme: "YourScheme",
output_directory: "#{outputdirectory}", # Destination directory. Defaults to current directory.
output_name: "#{outputname}",
use_legacy_build_api: true
)
resign(
bundle_id: "com.XXX.inhouse",
ipa: "#{outputdirectory}/#{outputname}",
signing_identity: "iPhone Distribution: XXXX",
provisioning_profile: "ProvisioningProfiles/XXX_inhouse.mobileprovision",
)
end
首先我们新建了一个inhouse命令,指定了输出文件夹和文件名,并执行gym命令,它和之前的adhoc内容是一样的,也就是说执行完gym即可生成一个adhoc的包。
下面我们执行resign命令,指定需要resign的ipa包,重新设置id,证书和授权文件,如此即可打出inhouse的包。
下面我们将打包好的ipa发布到fir.im平台
先安装fir,fir.im提供可上传命令,还有jenjins插件,具体还没有细看,总之先使用上传命令,新建build.sh脚本,脚本实现如下:
#!/bin/bash
project_path=$(pwd)
if [ $1 == "inhouse" ]
then
fastlane inhouse
ipa_path="${project_path}/inhouseipa/inhouse.ipa"
#上传到fir
fir publish ${ipa_path} -T "your fir.im token" -c "$2"
elif [ $1 == "adhoc" ]
then
fastlane adhoc
ipa_path="${project_path}/adhocipa/adhoc.ipa"
#上传到fir
fir publish ${ipa_path} -T "your fir.im token" -c "$2"
fi
在控制台执行:
sh build.sh adhoc adhoctest
或者:
sh build.sh inhouse inhousetest
第一个参数指定fastlane的命令,第二个参数说明提交日志。
总结
以上即完成了使用fastlane实现adhoc和inhouse两个版本的自动打包,使用fir.im平台实现上传和下载的全部。但上述脚本显然还有很多问题,我们后续再更新,