前言
现在网上有很多自动化打包的脚本,上网搜索一下就有这么些个,眼花缭乱,大多是使用xcodebuild命令,或者在Jenkins上面部署,方便实用。
auto1.png
打包方式
1 自动化脚本打包
无论是jekins部署还是使用xcodebuild指令的shell脚本都是不错的选择。可以自行google ,网上很多类似的案例。
2 Apple推荐的方式
使用xcode的archive功能:Product -> Archieve -> Export
3 手动build打包 (推荐指数五星)
(1) 手动编译,生成 .app 文件
(2) 把 .app 文件放在名字为 Payload 文件夹下
(3) 压缩文件夹,生成 .zip 文件
(4) 修改文件名:.zip -> ipa,打包完成
(5) 登陆各个平台(蒲公英,fir等),把本地的ipa包上传
*******************画重点***********************
这里有小弟自己写的一个上传脚本,地址在此:上传ipa脚本地址
只需要编译一下工程,生成.app文件,再配置一下脚本中的参数即可,一键上传ipa包,具体步骤如下:
- 1 如果是上传fir平台,把isFir变量更改为fir;上传蒲公英平台则改成pyger
- 2 desktop参数改成自己本地的路径(本来是想使用绝对路径的,但是后面会报错,新手一枚不知道怎么解决,所以。。),如 ="/Users/用户名"
- 3 appFileFullPath 路径改成你自己项目build + b 之后 .app 文件的路径即可(设备选择 generic ios device)
- 4 如果是蒲公英平台的话: 需要获取ukey和apikey两个参数 ,具体可以参照蒲公英获取ukey和apikey页面,updateDescription参数是本更新内容;如果是上传到fir平台,则需要apiToken参数,可以去fir平台自行获取,projectDir是此次更新内容
- 5 注意一下,如果是是上传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#uploadApp
uKey="自己的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=0
uploadMethod() {
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}
else
echo "正在上传到蒲公英...."
# 上传IPA到蒲公英 file=@$programBag/Payload.ipa
curl -F "file=@$programBag/Payload.ipa" \
-F "uKey=$uKey" \
-F "_api_key=$apiKey" \
-F "updateDescription=$updateDescription" \
https://www.pgyer.com/apiv1/app/upload
if [ $? -eq 0 ]
then
echo "\n🎉🎉上传蒲公英成功"
echo "===总计用时为: ${SECONDS}s==="
rm -rf ${programBag}
else
echo "上传蒲公英失败"
fi
fi
}
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 Payload
if [ $? -eq 0 ]
then
mv Payload.zip Payload.ipa
echo "压缩成功"
uploadMethod
else
echo "压缩失败"
fi
image.png
GifMakerProject2.gif
******************************************
结语
个人认为自动化打包脚本,打包的速度有点慢,因为自动化的脚本一般都是封装的xcodebuild指令,实际上和手动打包的原理差不多,用到了achive方法。(swift的项目可能会比oc的项目要编译的慢一点,再加上一些代码书写问题可能就会更慢(多提一嘴,这里给swift项目开发的小伙伴安利一个检测项目编译时间的工具,很实用,地址在此:BuildTimeAnalyzer-for-Xcode))
而且部署起来也稍稍有些麻烦,不错还好,一错就各种找不着头脑(可能我在网上找的脚本都比较low,或者我比较low)。
选择第二种方式,手动build 之后,生成.app 文件,然后运行自己写的脚本,是目前我觉得最省时最快捷的方式。。由于是shell初学,可能代码写的一般,旨在解决问题,哈哈(轻喷轻喷)。
对前端开发来说,shell语言的学习可以在一些方面提高我们的开发效率,毕竟人生苦短嘛!!!
如果觉得能帮到您的,麻烦点个小星星,哈哈!!大家加油!!!
网友评论
我感觉testflighting 需要手机测试人员的 苹果账号,这个账号一般人都知道
使用fir 需要收集 测试人的UDID 加入开发证书 这个UDID 基本上做技术的人知道其他的同事不知道在哪查!
这个上传fir 的脚本 之前我也搞过,感觉不怎么实用,直接拖到他们网页就搞定的事!