iOS自動打包并發(fā)布到蒲公英腳本

本文最終實(shí)現(xiàn)的是使用腳本自動化對iOS進(jìn)行打包,并發(fā)布到蒲公英上,用戶只需要更換自己的一些參數(shù)名稱,打包環(huán)境,證書等就可以輕松實(shí)現(xiàn)。

xcodebuild

本文打包使用的是蘋果提供的打包工具:xcodebuild。用興趣的童鞋可以自己谷歌。

  • 打包這里主要提供兩種方式:

<pre>

方式一:需要在包含 name.xcodeproj 的目錄下執(zhí)行 xcodebuild命令,且如果該目錄下有多個(gè) projects,那么需要使用 -project 指定需要 build 的項(xiàng)目。

xcodebuild -project $appName.xcodeproj -scheme ${targetName} -configuration $conf -derivedDataPath build -sdk iphoneos ${Profile_UUID} ${args} || exit $?
</pre>

<pre>

方式二:當(dāng) build workspace(例如:使用cocopod的情況下) 時(shí),需要同時(shí)指定 -workspace 和 -scheme參數(shù),scheme 參數(shù)控制了哪些 targets 會被 build 以及以怎樣的方式 build。

xcodebuild -workspace $appName.xcworkspace -scheme ${targetName} -configuration $conf -derivedDataPath build -sdk iphoneos ${Profile_UUID} ${args} || exit $?
</pre>

  • 打包后的文件導(dǎo)出為ipa文件,使用 xcrun 命令

<pre>
xcrun -sdk iphoneos PackageApplication -v "$appFile" -o "$ipaPath"
</pre>

導(dǎo)入證書

可以根據(jù)需要,將多套p12證書和PROVISIONING_PROFILE文件直接放到工程文件里面,打包的時(shí)候選擇一套就可以打出對應(yīng)的包,不需要再到xcode進(jìn)行設(shè)置了。

證書.png

<pre>

證書配置

echo "--------證書配置--------"

選擇包類型(根據(jù)賬號證書類型選擇)

bundleId="xxxxx"
bundleName="xxx"

if [[ $dev == "YES" ]];then

導(dǎo)入證書1(開發(fā)證書)

security import ${initPath}/Develop_Ent/meiboquan_iOS_develop_p12.p12 -k ~/Library/Keychains/login.keychain -P "123456" -T /usr/bin/codesign
SIGNING_IDENTITY="iPhone Developer: ya ma (WSHJLKXH4E)"
PROVISIONING_PROFILE="${initPath}/Develop_Ent/meiboquan_iOS_development2016717.mobileprovision"
echo "導(dǎo)入證書1"
else

導(dǎo)入證書2

echo "導(dǎo)入證書2"
fi
</pre>

dSYM文件保存

在XCODE編譯項(xiàng)目之后,會生成一個(gè)同名的dSYM文件,一個(gè)編譯的中轉(zhuǎn)文件,簡單說就是debug的symbols包含在這個(gè)文件中.他有什么作用? 當(dāng)release的版本 crash的時(shí)候,會有一個(gè)日志文件,包含出錯(cuò)的內(nèi)存地址, 使用symbolicatecrash工具能夠把日志和dSYM文件轉(zhuǎn)換成可以閱讀的log信息,也就是將內(nèi)存地址,轉(zhuǎn)換成程序里的函數(shù)或變量和所屬于的文件名.我們打包后最好也將dSYM文件和ipa文件一起保存至本地,方便其他同事在需要的時(shí)候方便解bug

上傳至蒲公英

蒲公英提供了上傳API,我們只需填寫appid和appkey,將ipa文件上傳至蒲公英,即可自動發(fā)布。
<pre>
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ffffff}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px 'PingFang SC'; color: #4cbf57}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #e44448}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ffffff; min-height: 16.0px}p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #c2349b}p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px 'PingFang SC'; color: #e44448}span.s1 {font-variant-ligatures: no-common-ligatures; color: #c2349b}span.s2 {font-variant-ligatures: no-common-ligatures}span.s3 {font-variant-ligatures: no-common-ligatures; color: #e44448}span.s4 {font: 14.0px Menlo; font-variant-ligatures: no-common-ligatures}span.s5 {font-variant-ligatures: no-common-ligatures; color: #ffffff}span.s6 {font-variant-ligatures: no-common-ligatures; color: #4cbf57}span.s7 {font: 14.0px 'PingFang SC'; font-variant-ligatures: no-common-ligatures; color: #4cbf57}span.s8 {font: 14.0px 'PingFang SC'; font-variant-ligatures: no-common-ligatures}span.s9 {font: 14.0px Menlo; font-variant-ligatures: no-common-ligatures; color: #ffffff}

if [[ $local != "YES" ]];then

通過api上傳到蒲公英當(dāng)中

pgyerUKey="xxxxx" # 這里替換蒲公英ukey
pgyerApiKey="xxxxx" # 這里替換蒲公英apiKey

RESULT=$(curl -F "file=@$ipaPath" -F "uKey=$pgyerUKey" -F "_api_key=$pgyerApiKey" -F "publishRange=2" http://www.pgyer.com/apiv1/app/upload)

echo "完成上傳"
echo $RESULT
echo 蒲公英網(wǎng)址 https://www.pgyer.com
else
echo "僅保存至本地,不上傳蒲公英"
fi
</pre>

打包測試

<pre>
aarondeMac-mini:Profile aaron$ bash packg.sh -d

Results at '/Users/aaron/Documents/github/meiboquan/Release/Distribution/meiboquan_201607171956/meiboquan_1.0.1_1_201607171956.ipa'
dSYMPath -- /Users/aaron/Documents/github/meiboquan/Release/Distribution/meiboquan_201607171956/meiboquan_1.0.1_1_201607171956.app.dSYM
----ipa和dSYM本地文件已生成----
-------開始蒲公英上傳--------
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 16.5M 100 2582 100 16.5M 20 131k 0:02:09 0:02:09 --:--:-- 29369
</pre>

打包后的文件.png
蒲公英.png

github傳送門

iOS-Automation-pack
喜歡的話就給一個(gè)星吧,有問題可以一起交流

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文轉(zhuǎn)自CaryaLiu's Blog。 本文最終實(shí)現(xiàn)的是使用腳本打 Ad-hoc 包,并發(fā)布測試,當(dāng)然稍微修改一...
    M_Baron閱讀 1,111評論 1 0
  • 本文最終實(shí)現(xiàn)的是使用腳本打 Ad-hoc 包,并發(fā)布測試,當(dāng)然稍微修改一下腳本參數(shù)就可以打其他類型的 ipa 包了...
    Crazy2015閱讀 389評論 0 0
  • 前言 眾所周知,現(xiàn)在App的競爭已經(jīng)到了用戶體驗(yàn)為王,質(zhì)量為上的白熱化階段。用戶們都是很挑剔的。如果一個(gè)公司的推廣...
    偏偏就是禰閱讀 9,351評論 34 59
  • 本文始發(fā)于我的博文詳解Shell腳本實(shí)現(xiàn)iOS自動化編譯打包提交,現(xiàn)轉(zhuǎn)發(fā)至此。 目錄 前言 Shell腳本涉及的工...
    zackzheng閱讀 44,777評論 95 173
  • 天地不仁,以萬物為芻狗. 何曰不仁,傳遞萬物能量可曰仁否? 愛情可喻品茶,初澀,末淡,中香。不可求烈,不可膽怯,...
    半知畫生閱讀 203評論 0 2

友情鏈接更多精彩內(nèi)容