iOS自动打包分发傻瓜式教程

所谓自动打包就是将繁琐的手动打包操作交给程序,一行命令实现自动打包上传。下面开始傻瓜式教程:

一、安装RVM

如果没有安装过rvm,需要安装rvm,在终端输入rvm -v命令查看,如果打印出rvm:command not found说明没有安装过rvm,如果能打印出rvm版本等信息说明安装过。如果没有安装过rvm可以通过下面的命安装,如果已经安装过可以忽略。

  在终端输入 curl -L get.rvm.io | bash -s stable ,然后稍等一会rvm就安装好了
  在终端输入 source ~/.bashrc
  在终端输入 source ~/.bash_profile
  再输入rvm -v查看安装成功

问题:如果出现安装rvm过程中出现
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|::|:443... failed错误
不要慌,我们打开hosts文件加上:(不懂如何修改hosts,自行百度)

  199.232.28.133   raw.githubusercontent.com

接着重新安装rvm就行了。

二、如果要发布到fir,需要安装fir-cli
  sudo gem install fir-cli

安装完登录

  fir login

之后需要输入 APIToken 即可登录成功。
APITokenfir 官网 应用管理页面,右上角用户下拉框中选择 APIToken 即可获取到。

三、下载脚本文件或者拷贝下面脚本到文本,保存为.sh格式。

下载地址:链接: https://pan.baidu.com/s/1KZICXTmskfNfs5wg7v0jYA 密码: fgif
下面是完整脚本可直接复制:

####################   根据自己项目手动配置以下   ##################################
#配置 账号密码和Tocken
# 自己的AppleID账号密码
AppleID="XXXXXX"
AppleID_Password="XXXXXX"

#fir Tocken
fir_tocken = "XXXXXX"

# 蒲公英userkey
pgyerUserKey="XXXXXX"
# 蒲公英apiKey
pgyerApiKey="XXXXXX"


#工程名 将XXX替换成自己的工程名
project_name="XXXXXX"

#scheme名 将XXX替换成自己的sheme名
scheme_name="XXXXXX"

#打包模式 Debug/Release
development_mode="Debug"

####################   根据自己项目手动配置以上   ##################################

#取当前时间字符串添加到文件结尾
now=$(date +%Y-%m-%d-%H:%M)
#当前工程绝对路径
project_path=$(cd `dirname $0`; pwd)
#生成的IPA文件存放路径
project_path_pre="~/Desktop/IPA"
#project_path_pre=../${project_path} //当前工程上一级目录

#plist文件所在路径
exportOptionsPlistPath=${project_path}/exportTest.plist

#编译过程中产生的临时文件夹,build文件夹路径(等打包成功之后删除掉)
tempBuild_path=${project_path}/build

#build文件夹路径
build_path=${project_path_pre}/build

#导出.ipa文件所在路径
exportIpaPath=~/Desktop/$project_name- 
IPA/${project_name}${now}/${development_mode}
#${project_path_pre}/IPADir/${development_mode}


echo "Place enter the number you want to export ? [ 1:app-store 2:fir(adhoc) 3:蒲公英 
(adhoc) 4:development] \n Please Enter Number: "

##
read number
while([[ $number != 1 ]] && [[ $number != 2 ]]  && [[ $number != 3 ]]  && [[ $number != 4 
]])
do
echo "Error! Should enter 1 or 2  or 3  or 4"
echo "Place enter the number you want to export ? [ 1:app-store 2:fir 3:蒲公英 
4:development] "
read number
done

if [ $number == 1 ];then
development_mode=Release
exportOptionsPlistPath=${project_path}/exportAppstore.plist
exportIpaPath=~/Desktop/$project_name- 
IPA/AppStore/${project_name}${now}/${development_mode}
elif [ $number == 2 ];then
development_mode=Release
exportOptionsPlistPath=${project_path}/exportAdhocRelease.plist
exportIpaPath=~/Desktop/$project_name- 
IPA/Adhoc/${project_name}${now}/${development_mode}
elif [ $number == 3 ];then
development_mode=Release
exportOptionsPlistPath=${project_path}/exportAdhocRelease.plist
exportIpaPath=~/Desktop/$project_name- 
IPA/Adhoc/${project_name}${now}/${development_mode}
elif [ $number == 4 ];then
development_mode=Release
exportOptionsPlistPath=${project_path}/exportTest.plist
exportIpaPath=~/Desktop/$project_name- 
IPA/Test/${project_name}${now}/${development_mode}
fi



echo '///-----------'
echo '/// 正在清理工程'
echo '///-----------'
xcodebuild \
clean -configuration ${development_mode} -quiet  || exit


echo '///--------'
echo '/// 清理完成'
echo '///--------'
echo ''

echo '///-----------'
echo '/// 正在编译工程:'${development_mode}
echo '///-----------'
xcodebuild archive \
-project ${project_path}/${project_name}.xcodeproj \
-scheme ${scheme_name} \
-configuration ${development_mode} \
-archivePath ${build_path}/${project_name}.xcarchive  -quiet  || exit

echo '///--------'
echo '/// 编译完成'
echo '///--------'
echo ''

echo '///----------'
echo '/// 开始ipa打包'
echo '///----------'
xcodebuild  \
-allowProvisioningUpdates \
-exportArchive \
-archivePath ${build_path}/${project_name}.xcarchive \
-configuration ${development_mode} \
-exportPath ${exportIpaPath} \
-exportOptionsPlist ${exportOptionsPlistPath} \
-quiet || exit

if [ -e $exportIpaPath/$scheme_name.ipa ]; then
echo '///----------'
echo '/// ipa包已导出'
echo '///----------'
open $exportIpaPath
rm -r $tempBuild_path
else
echo '///-------------'
echo '/// ipa包导出失败 '
echo '///-------------'
fi
echo '///------------'
echo '/// 打包ipa完成  '
echo '///-----------='
echo ''

echo '///-------------'
echo '/// 开始发布ipa包 '
echo '///-------------'

if [ $number == 1 ];then

#验证并上传到App Store
# 将-u 后面的XXX替换成自己的AppleID的账号,-p后面的XXX替换成自己的密码altoolPath="/Applications/Xcode10.1.app/Contents/Applications/ApplicationLoader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool"
"$altoolPath" --validate-app -f ${exportIpaPath}/${scheme_name}.ipa -u ${AppleID} -p ${AppleID_Password} -t ios --output-format xml
"$altoolPath" --upload-app -f ${exportIpaPath}/${scheme_name}.ipa -u ${AppleID} -p 
${AppleID_Password} -t ios --output-format xml

echo "===发布完成==="
elif [ $number == 2 ];then

#上传到Fir
echo "+++++上传到Fir平台+++++"
# 将fir_tocken替换成自己的Fir平台的token
fir login -T ${fir_tocken}
fir publish $exportIpaPath/$scheme_name.ipa

elif [ $number == 3 ];then
#上传到蒲公英
#执行上传至蒲公英的命令
echo "+++++上传到蒲公英平台+++++"
curl -F "file=@${exportIpaPath}/${scheme_name}.ipa" -F "uKey=${pgyerUserKey}" -F"_api_key=${pgyerApiKey}" http://www.pgyer.com/apiv1/app/upload
elif [ $number == 4 ];then

# 将fir_tocken替换成自己的Fir平台的token
fir login -T ${fir_tocken}
fir publish $exportIpaPath/$scheme_name.ipa
fi



exit 0
四、修改脚本里项目信息及拖入工程中

1、将下载下来的三个plist文件及脚本.sh拖入工程目录
WeChatb82a180922cb8f248e65038e7dcbf3dd.png

2、修改脚本文件的配置信息


WeChat2956b36fd8b078cc1c4c2dd40fd20223.png

3、修改刚拖入工程的那几个plist文件的teamID.(teamID哪里查看,自行百度哦)


WeChat73180dfa18859a97f00c5528ce9c9b02.png
五、运行脚本

打开终端,cd到你的工程目录之下,执行命令

 sh /Users/macos/Desktop/xbullschool/shell.sh(直接把工程的sh文件拖到终端即可)

回车、坐等打包完毕【可能会报错,不过问题不大】
打包完毕可以在项目同级目录查看ipa包及fir下载二维码:如下


WeChatdf51e13ab80ded833d5404784ad6415b.png

问题:
1、找不到xcodeproj
如下图:如果你是pod管理则保留xcworkspace删掉xcodeproj这行代码,如果是只有xcodeproj就删掉xcworkspace那行代码


WeChatb590848eab02695b0c97f9f1d54f9605.png

2、找不到证书
一般就是没有证书,创建一个就行了

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