本文最終實(shí)現(xiàn)的是使用腳本自動(dòng)化對(duì)iOS進(jìn)行打包,并發(fā)布到蒲公英上,用戶只需要更換自己的一些參數(shù)名稱,打包環(huán)境膏斤,證書(shū)等就可以輕松實(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 會(huì)被 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)入證書(shū)
可以根據(jù)需要守呜,將多套p12證書(shū)和PROVISIONING_PROFILE文件直接放到工程文件里面型酥,打包的時(shí)候選擇一套就可以打出對(duì)應(yīng)的包山憨,不需要再到xcode進(jìn)行設(shè)置了。
<pre>
證書(shū)配置
echo "--------證書(shū)配置--------"
選擇包類型(根據(jù)賬號(hào)證書(shū)類型選擇)
bundleId="xxxxx"
bundleName="xxx"
if [[ $dev == "YES" ]];then
導(dǎo)入證書(shū)1(開(kāi)發(fā)證書(shū))
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)入證書(shū)1"
else
導(dǎo)入證書(shū)2
echo "導(dǎo)入證書(shū)2"
fi
</pre>
dSYM文件保存
在XCODE編譯項(xiàng)目之后,會(huì)生成一個(gè)同名的dSYM文件冕末,一個(gè)編譯的中轉(zhuǎn)文件,簡(jiǎn)單說(shuō)就是debug的symbols包含在這個(gè)文件中.他有什么作用? 當(dāng)release的版本 crash的時(shí)候,會(huì)有一個(gè)日志文件,包含出錯(cuò)的內(nèi)存地址, 使用symbolicatecrash工具能夠把日志和dSYM文件轉(zhuǎn)換成可以閱讀的log信息,也就是將內(nèi)存地址,轉(zhuǎn)換成程序里的函數(shù)或變量和所屬于的文件名.我們打包后最好也將dSYM文件和ipa文件一起保存至本地萍歉,方便其他同事在需要的時(shí)候方便解bug
上傳至蒲公英
蒲公英提供了上傳API侣颂,我們只需填寫appid和appkey档桃,將ipa文件上傳至蒲公英,即可自動(dòng)發(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
通過(guò)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>
打包測(cè)試
<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本地文件已生成----
-------開(kāi)始蒲公英上傳--------
% 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>
github傳送門
iOS-Automation-pack
喜歡的話就給一個(gè)星吧,有問(wèn)題可以一起交流