前言
现在网上有很多自动化打包的脚本,上网搜索一下就有这么些个,眼花缭乱,大多是使用xcodebuild命令,或者在Jenkins上面部署,方便实用。
打包方式
1 自动化脚本打包
无论是jekins部署还是使用xcodebuild指令的shell脚本都是不错的选择。可以自行google ,网上很多类似的案例。
2 Apple推荐的方式
使用xcode的archive功能:Product -> Archieve -> Export
3 手动build打包 (推荐指数五星)
手动编译,生成 .app 文件
把 .app 文件放在名字为 Payload 文件夹下
压缩文件夹,生成 .zip 文件
修改文件名:.zip -> ipa,打包完成
登陆各个平台(蒲公英,fir等),把本地的ipa包上传
*******************画重点***********************
这里有小弟自己写的一个上传脚本,地址在此:上传ipa脚本地址
只需要编译一下工程,生成.app文件,再配置一下脚本中的参数即可,一键上传ipa包,具体步骤如下:
如果是上传fir平台,把isFir变量更改为fir;上传蒲公英平台则改成pyger
desktop参数改成自己本地的路径(本来是想使用绝对路径的,但是后面会报错,新手一枚不知道怎么解决,所以。。),如 ="/Users/用户名"
appFileFullPath 路径改成你自己项目build + b 之后 .app 文件的路径即可(设备选择 generic ios device)
如果是蒲公英平台的话: 需要获取ukey和apikey两个参数 ,具体可以参照蒲公英获取ukey和apikey页面,updateDescription参数是本更新内容;如果是上传到fir平台,则需要apiToken参数,可以去fir平台自行获取,projectDir是此次更新内容
注意一下,如果是是上传fir平台的话,首先要登陆一下 打开终端 输入fir login API Token (API Token 就是平台上获取的token)如果出现了success等字样说明登陆成功 ,然后还需要安装fir-cli工具,也很简单 终端输入sudo gem install -n /usr/local/bin fir-cli --no-ri --no-rdoc 等待完成即可
遵从以上步骤之后,打开终端,输入 sh + 脚本文件路径 (可以直接把文件拖动到终端中即可)等待完成即可
代码在此:
# ************************ 相关参数配置(蒲公英和fir 二选一) **************************# 设置是使用fir上传(改成fir)还是蒲公英上传pgyer(改成pgyer) --isFir="fir"# 换算成自己主文件路径 --(使用绝对路径报错,不知道为何)--desktop="/Users/自己的用户名"# .app 文件的路径appFileFullPath="自己的.app文件路径,如下"#appFileFullPath="$desktop/Library/Developer/Xcode/DerivedData/FirTextExmple-aqjhktrtgzvszeevtcsdjrypkvfs/Build/Products/Debug-iphoneos/FirTextExmple.app"# 蒲公英的参数: 自行填写自己账号对应的key值 上传文档地址:https://www.pgyer.com/doc/api#uploadAppuKey="自己的uKey,获取方式上面链接"apiKey="自己的apiKey,获取方式上面链接"# 蒲公英需要填写的版本描述updateDescription="这是一个测试路径的版本"# 上传到fir时,运行脚本之前要先登录一下:fir login API Token。 出现成功字段即可# fir的参数:#apiToken="62284d44d88e34c013e481184b409fb8"apiToken="自己的apiToken"#projectDir="这是一个上传测试fir的脚本描述"# **************************************************programBag="$desktop/Desktop/ProgramBag"payloadPath="$desktop/Desktop/Payload"#计时SECONDS=0uploadMethod() {if [ $isFir == "fir" ]; then# 或者上传IPA到fir上面 -- 明天写 --echo "正在上传到fir.im...."fir publish "$programBag/Payload.ipa" -T "$apiToken" -c ${projectDir}echo "/n????打包上传更新成功!"#输出总用时echo "===总计用时为: ${SECONDS}s==="rm -rf ${programBag}elseecho "正在上传到蒲公英...."# 上传IPA到蒲公英 file=@$programBag/Payload.ipacurl -F "file=@$programBag/Payload.ipa" / -F "uKey=$uKey" / -F "_api_key=$apiKey" / -F "updateDescription=$updateDescription" / https://www.pgyer.com/apiv1/app/uploadif [ $? -eq 0 ]thenecho "/n????上传蒲公英成功"echo "===总计用时为: ${SECONDS}s==="rm -rf ${programBag}elseecho "上传蒲公英失败"fifi} mkdir -p ${payloadPath}cp -r ${appFileFullPath} ${payloadPath}mkdir -p ${programBag}cp -r ${payloadPath} ${programBag} && rm -rf ${payloadPath}cd ${programBag}zip -q -r ./Payload.zip ./* && rm -rf Payloadif [ $? -eq 0 ]thenmv Payload.zip Payload.ipaecho "压缩成功"uploadMethodelseecho "压缩失败"fi
******************************************
结语
个人认为自动化打包脚本,打包的速度有点慢,因为自动化的脚本一般都是封装的xcodebuild指令,实际上和手动打包的原理差不多,用到了achive方法。(swift的项目可能会比oc的项目要编译的慢一点,再加上一些代码书写问题可能就会更慢(多提一嘴,这里给swift项目开发的小伙伴安利一个检测项目编译时间的工具,很实用,地址在此:BuildTimeAnalyzer-for-Xcode))
而且部署起来也稍稍有些麻烦,不错还好,一错就各种找不着头脑(可能我在网上找的脚本都比较low,或者我比较low)。
选择第二种方式,手动build 之后,生成.app 文件,然后运行自己写的脚本,是目前我觉得最省时最快捷的方式。。由于是shell初学,可能代码写的一般,旨在解决问题,哈哈(轻喷轻喷)。
对前端开发来说,shell语言的学习可以在一些方面提高我们的开发效率,毕竟人生苦短嘛!!!
如果觉得能帮到您的,麻烦点个小星星,哈哈!!大家加油!!!
参考文章: