iOS 最省时的打包姿势

前言

现在网上有很多自动化打包的脚本,上网搜索一下就有这么些个,眼花缭乱,大多是使用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语言的学习可以在一些方面提高我们的开发效率,毕竟人生苦短嘛!!!

如果觉得能帮到您的,麻烦点个小星星,哈哈!!大家加油!!!

参考文章:

ios自动话打包探索
shell教程,菜鸟教程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269