Shell自動(dòng)化打包,發(fā)布App到AppStore蒲公英

自動(dòng)化打包流程和手動(dòng)打包一模一樣绽昏,只是用腳本解放雙手而已。后面會(huì)有demo和腳本文件团滥。


示例

準(zhǔn)備工作

1.準(zhǔn)備一個(gè)打包的配置文件(配置文件:包含了證書等信息)

2.上傳蒲公英的key

3蘋果開發(fā)中帳號(hào)和密碼颓影,如開啟了雙重驗(yàn)證需要app specific 密碼

2.在Demo中復(fù)制如下兩個(gè)plist和腳本,并做修改

腳本中把XXX修改為自己項(xiàng)目信息即可



#使用方法

if[ ! -d ./IPADir ];

? ? then

? ? ? ? mkdir -p IPADir;

fi

#工程絕對(duì)路徑

project_path=$(cd`dirname $0`; pwd)

#工程名 將XXX替換成自己的工程名

project_name=XXX

#scheme名 將XXX替換成自己的sheme名

scheme_name=XXX

#打包模式 Debug/Release

development_mode=Release

#build文件夾路徑

build_path=${project_path}/build

#plist文件所在路徑

exportOptionsPlistPath=${project_path}/exportAppstore.plist

#導(dǎo)出.ipa文件所在路徑

exportIpaPath=${project_path}/IPADir/${development_mode}

echo "請(qǐng)輸入你想法發(fā)布的方式 ? [ 1:app-store 2:ad-hoc] "

##

readnumber

? ? while([[ $number !=1]] && [[ $number !=2]])

? ? do

? ? ? ? echo"笨蛋盾鳞,只能輸入 1 or 2"

? ? ? ? echo"請(qǐng)輸入你想法發(fā)布的方式 ? [ 1:app-store 2:ad-hoc] "

? ? ? ? readnumber

? ? done

if[ $number ==1];

? ? then

? ? development_mode=Release

? ? exportOptionsPlistPath=${project_path}/exportAppstore.plist

## 證書名字

? ? else

? ? development_mode=Debug

? ? exportOptionsPlistPath=${project_path}/exportTest.plist

fi

echo '///-----------'

echo '/// 正在清理工程'

echo '///-----------'

xcodebuild \

clean -configuration ${development_mode} -quiet? ||exit

echo '///--------'

echo '/// 清理完成'

echo '///--------'

echo''

echo '///-----------'

echo'/// 正在編譯工程:'${development_mode}

echo '///-----------'

xcodebuild \

archive -workspace ${project_path}/${project_name}.xcworkspace \

-scheme ${scheme_name} \

-configuration ${development_mode} \

-archivePath ${build_path}/${project_name}.xcarchive -quiet? ||exit

echo '///--------'

echo '/// 編譯完成'

echo '///--------'

echo''

echo '///----------'

echo '/// 開始ipa打包'

echo '///----------'

xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive \

-configuration ${development_mode} \

-exportPath ${exportIpaPath} \

-exportOptionsPlist ${exportOptionsPlistPath} \

-quiet ||exit

# 刪除build包

if[[ -d build ]];then

rm -rf build -r

fi

if[ -e $exportIpaPath/$scheme_name.ipa ];

? ? then

? ? echo'///----------'

? ? echo'/// ipa包已導(dǎo)出'

? ? echo'///----------'

? ? open $exportIpaPath

? ? else

? ? echo'///-------------'

? ? echo'/// ipa包導(dǎo)出失敗 '

? ? echo'///-------------'

fi

echo '///------------'

echo '/// 打包ipa完成? '

echo '///-----------='

echo''

echo '///-------------'

echo '/// 開始發(fā)布ipa包 '

echo '///-------------'

if[ $number ==1];

? ? then

? ? #驗(yàn)證并上傳到App Store

? ? # 將-u 后面的XXX替換成自己的AppleID的賬號(hào)犬性,-p后面的XXX替換成自己的密碼

? ? altoolPath="/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool"

? ? "$altoolPath"--validate-app -f ${exportIpaPath}/${scheme_name}.ipa -u XXX [-p XXX]

? ? "$altoolPath"--upload-app -f ${exportIpaPath}/${scheme_name}.ipa -u? XXX -p XXX

else

? ? echo"請(qǐng)輸入你要發(fā)布的平臺(tái) ? [ 1:fir 2:蒲公英] "

? ? ##

? ? readplatform

? ? ? ? while([[ $platform !=1]] && [[ $platform !=2]])

? ? ? ? do

? ? ? ? ? ? echo"笨蛋,只能輸入 1 or 2"

? ? ? ? ? ? echo"請(qǐng)輸入你要發(fā)布的平臺(tái) ? [ 1:fir 2:蒲公英] "

? ? ? ? ? ? readplatform

? ? ? ? done

? ? ? ? ? ? if[ $platform ==1];

? ? ? ? ? ? ? ? then

? ? ? ? ? ? ? ? #上傳到Fir

? ? ? ? ? ? ? ? # 將XXX替換成自己的Fir平臺(tái)的token

? ? ? ? ? ? ? ? fir login -T d58c5754d2aff40b4d883ddfefa0d079

? ? ? ? ? ? ? ? fir publish $exportIpaPath/$scheme_name.ipa

? ? ? ? ? ? else

? ? ? ? ? ? ? ? echo"開始上傳到蒲公英"

? ? ? ? ? ? ? ? #上傳到蒲公英

? ? ? ? ? ? ? ? #蒲公英aipKey

? ? ? ? ? ? ? ? MY_PGY_API_K=XXX

? ? ? ? ? ? ? ? #蒲公英uKey

? ? ? ? ? ? ? ? MY_PGY_UK=XXX

? ? ? ? ? ? ? ? curl -F"file=@${exportIpaPath}/${scheme_name}.ipa" -F "uKey=${MY_PGY_UK}" -F "_api_key=${MY_PGY_API_K}" https://qiniu-storage.pgyer.com/apiv1/app/upload

? ? ? ? ? ? fi

fi

echo "\n\n"

echo "已運(yùn)行完畢>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"

exit 0

3.使用(此腳本適用于cocopods工程腾仅,沒有用到的話pod init一下即可(必須))

在項(xiàng)目路徑下執(zhí)行./shell.sh 即可


上傳蒲公英和Fir 需要準(zhǔn)備如下

上傳蒲公英需要準(zhǔn)備:key

?上傳Fir需要安裝插件

打開fir.im官網(wǎng) 查看fir命令行說明即可



操作過程過中出現(xiàn)錯(cuò)誤及解決方法


1. ? ?xcodebuild:error Unknow build action xx.xcworkspace

? ? ? 我這里的錯(cuò)誤是有個(gè)文件夾Swift Test 中間出現(xiàn)了空格乒裆,刪除空格即可


2. 發(fā)布到app store時(shí),輸入密碼后報(bào)app specific password 錯(cuò)誤(這是因?yàn)閹ぬ?hào)開啟了雙重驗(yàn)證推励,比如:短信驗(yàn)證)

解決如下 去蘋果官網(wǎng)https://appleid.apple.com?找到賬戶設(shè)置鹤耍,安全 生成密碼,復(fù)制验辞,發(fā)布時(shí)填寫這個(gè)密碼即可


發(fā)布至app store 如下



到此即發(fā)布成功了,有空了分享下fastLane自動(dòng)化打包

Demo 傳送門https://github.com/TeeMoYan/shell-.git

Fastlane自動(dòng)化打包:http://www.reibang.com/p/f468d6ca0310

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稿黄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子跌造,更是在濱河造成了極大的恐慌杆怕,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壳贪,死亡現(xiàn)場(chǎng)離奇詭異陵珍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)撑碴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門撑教,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人醉拓,你說我怎么就攤上這事伟姐∈账眨” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵愤兵,是天一觀的道長(zhǎng)鹿霸。 經(jīng)常有香客問我,道長(zhǎng)秆乳,這世上最難降的妖魔是什么懦鼠? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮屹堰,結(jié)果婚禮上肛冶,老公的妹妹穿的比我還像新娘。我一直安慰自己扯键,他們只是感情好睦袖,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荣刑,像睡著了一般馅笙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厉亏,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天董习,我揣著相機(jī)與錄音,去河邊找鬼爱只。 笑死皿淋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的虱颗。 我是一名探鬼主播沥匈,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼蔗喂,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼忘渔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缰儿,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤畦粮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后乖阵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宣赔,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年瞪浸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了儒将。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡对蒲,死狀恐怖钩蚊,靈堂內(nèi)的尸體忽然破棺而出贡翘,到底是詐尸還是另有隱情,我是刑警寧澤砰逻,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布鸣驱,位于F島的核電站,受9級(jí)特大地震影響蝠咆,放射性物質(zhì)發(fā)生泄漏踊东。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一刚操、第九天 我趴在偏房一處隱蔽的房頂上張望闸翅。 院中可真熱鬧,春花似錦菊霜、人聲如沸缎脾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)遗菠。三九已至,卻和暖如春华蜒,著一層夾襖步出監(jiān)牢的瞬間辙纬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工叭喜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贺拣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓捂蕴,卻偏偏與公主長(zhǎng)得像譬涡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啥辨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • #使用方法# 刪除IPADir包if [ ! -d ./IPADir ]; then mkdir -p I...
    hie閱讀 1,248評(píng)論 0 0
  • 前言 眾所周知涡匀,現(xiàn)在App的競(jìng)爭(zhēng)已經(jīng)到了用戶體驗(yàn)為王,質(zhì)量為上的白熱化階段溉知。用戶們都是很挑剔的陨瘩。如果一個(gè)公司的推廣...
    偏偏就是禰閱讀 8,948評(píng)論 34 59
  • 寫在前面 之前寫了一個(gè)很簡(jiǎn)單的ipa打包腳本,主要是用Xcode命令中的xcodebuild和xcrun命令來完成...
    嘿你個(gè)叼買毛閱讀 2,503評(píng)論 2 7
  • 利用腳本自動(dòng)打包自動(dòng)上傳到蒲公英分發(fā)測(cè)試平臺(tái)级乍,新建一個(gè)txt舌劳,改為.sh,粘貼下面的全部文字玫荣,按需配置信息甚淡,然后在...
    永遠(yuǎn)都能閱讀 821評(píng)論 0 2
  • 我只是報(bào)個(gè)恩,你把自己整死了怪誰(shuí)捅厂。 1 小沙彌釋非問師父贯卦,師父師父底挫,這鐵塔之下有什么?是不是有杰克船長(zhǎng)埋下的財(cái)寶脸侥,...
    葫蘆世界平臺(tái)閱讀 1,183評(píng)論 0 0