一切都是因?yàn)閼小猉Code自動(dòng)打包

這是一篇關(guān)于XCode自動(dòng)打包的文章以及xcodebuild, xrun兩種打包方法寫法茄茁。
自動(dòng)打包的文章非常非常多了,我寫這篇也沒什么新意为迈,只是因?yàn)橛辛薃ndroid那篇丹壕,所以也得有iOS的。
忽略這篇文章的名字沃疮,也是因?yàn)樯掀鹆诉@個(gè)名字盒让。。司蔬。

1.xrun方法:

##########################################################################################

buildtype=sample-ol
hosturl=https://xxx.xxx.xxx

##########################################################################################
#拷貝替換資源

#需要拷貝的資源路徑
resource_path=/Users/Compass/Package/Resource/${buildtype}/resource.zip

current_dir=$(pwd)
echo $current_dir
cd $current_dir
cd ..
cd WReader/Sample
workspace_pathbase=$(pwd)
echo $workspace_pathbase

#根據(jù)當(dāng)前shell所在位置邑茄,獲取到的工程代碼路徑
workspace_path=${workspace_pathbase}/Sample

echo ======Begin Build=========

#resource在工程里的路徑
resource_workpath=${workspace_path}/resource.zip
#拷貝資源到工程路徑,強(qiáng)制替換
cp ${resource_path} ${resource_workpath}

##########################################################################################
 # 指定ipa的輸出位置
ipa_path=/Users/Compass/Package/app/$(date +%Y%m%d)

# 配置文件的位置俊啼,修改配置文件里的某些參數(shù)
config_plist=${workspace_path}/Resource/config.plist
  
# 修改config
/usr/libexec/PlistBuddy -c "Set:hosturl ${hosturl}" ${config_plist}

# 清空上一次的文件夾
rm -rf ${workspace_pathbase}/Build

# 進(jìn)入要工作的文件夾
cd ${workspace_pathbase}
 
# 打包項(xiàng)目名字
scheme_name=Sample
 
# ipa名字
ipa_name=${buildtype}

# 打包使用的證書
CODE_SIGN_IDENTITY="iPhone Distribution: Beijing XXXXXX XXXXXX, XXXXXX."
 
# 打包使用的描述文件
PROVISIONING_PROFILE="XXXX-XXXX-XXXX-XXXX-XXXXXXXXX"

# 指定app的輸出位置 也就是Demo中build文件夾的位置
build_path=${workspace_pathbase}/Build
 
# 生成app
xcodebuild -project ${workspace_path}.xcodeproj -target ${scheme_name} -configuration Release clean -sdk iphoneos build CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" PROVISIONING_PROFILE="${PROVISIONING_PROFILE}" SYMROOT="${build_path}"

mkdir /Users/Compass/Package/app/$(date +%Y%m%d)

xcrun -sdk iphoneos -v PackageApplication ${build_path}/Release-iphoneos/Sample.app -o ${ipa_path}/${ipa_name}.ipa

echo ======End Build=========

其實(shí)關(guān)鍵只有兩步肺缕,上面一大堆都是找路徑和拷貝資源文件的:

# 1.build app
xcodebuild -project ${workspace_path}.xcodeproj -target ${scheme_name} -configuration Release clean -sdk iphoneos build CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" PROVISIONING_PROFILE="${PROVISIONING_PROFILE}" SYMROOT="${build_path}"
# 2.生成ipa
xcrun -sdk iphoneos -v PackageApplication ${build_path}/Release-iphoneos/Sample.app -o ${ipa_path}/${ipa_name}.ipa

其中,打包需要的證書授帕,描述文件如果不知道在哪里看同木,打開xcodeproj/project.pbxproj,以文本方式打開:

CODE_SIGN_IDENTITY的地方:

image.png

PROVISIONING_PROFILE的地方:
image.png

用xrun打包的時(shí)候,其實(shí)使用的是PackageApplication工具跛十,但是這個(gè)工具在XCode8.2.1(好像是這個(gè)版本)以后就沒有了彤路,所以,如果報(bào)找不到這個(gè)工具的錯(cuò)誤芥映,可以參照這位同學(xué)方法放回去:
http://blog.csdn.net/itiapp_home/article/details/70241011
用xrun打包成功之后斩萌,會(huì)有一個(gè)警告:

warning: PackageApplication is deprecated, use `xcodebuild -exportArchive` instead.

因此,如果我們不用xrun打包屏轰,還有其他的方法颊郎,就是使用xcodebuild exportArchive:

2.xcodebuild導(dǎo)出ipa:

# 指定exportplist位置
export_plist=${workspace_path}/Resource/exportplist.plist

# 1.清空
xcodebuild clean -project ${workspace_path}.xcodeproj -target ${scheme_name}

# 2.指定輸出xcarchive路徑,打包xcarchive
archivepath=${build_path}/Archive/Sample.xcarchive
xcodebuild archive -project ${workspace_path}.xcodeproj -scheme ${scheme_name} -configuration Release -archivePath ${archivepath} 

# 2.輸出ipa
xcodebuild -exportArchive -archivePath ${archivepath} -exportPath ${ipa_path}  -exportOptionsPlist ${export_plist}

其中exportplist里的內(nèi)容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>method</key>
    <string>enterprise</string>
    <key>teamID</key>
    <string>xxxxxxx</string>
</dict>
</plist>

method是打包的類型,文檔上有ad-hoc,enterprise等幾種值霎苗,我這里使用的是enterprise.其他值不清楚的大家搜一下文檔姆吭。
其實(shí)這幾個(gè)值,也可以在shell里編譯的時(shí)候自動(dòng)寫值唁盏,寫入方法參照上面plist寫入方法内狸。
TeamID的值是DEVELOPMENT_TEAM的值:

兩種方法我都測過了检眯,都可以打包成功。
因?yàn)槲也恍枰褂闷压⒌绕脚_(tái)昆淡,所以其他就不介紹了锰瘸。

有一點(diǎn)小郁悶:因?yàn)閕OS打包的時(shí)候,developer和distribution的包使用的證書是不一樣的昂灵,每次編譯的時(shí)候避凝,需要手動(dòng)選一下證書,否則可以和android一樣一鍵搞定眨补,連IDE都不用打開了管削。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市撑螺,隨后出現(xiàn)的幾起案子含思,更是在濱河造成了極大的恐慌,老刑警劉巖甘晤,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件含潘,死亡現(xiàn)場離奇詭異,居然都是意外死亡线婚,警方通過查閱死者的電腦和手機(jī)遏弱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酌伊,“玉大人,你說我怎么就攤上這事缀踪【幼” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵驴娃,是天一觀的道長奏候。 經(jīng)常有香客問我,道長唇敞,這世上最難降的妖魔是什么蔗草? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮疆柔,結(jié)果婚禮上咒精,老公的妹妹穿的比我還像新娘。我一直安慰自己旷档,他們只是感情好模叙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鞋屈,像睡著了一般范咨。 火紅的嫁衣襯著肌膚如雪故觅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天渠啊,我揣著相機(jī)與錄音输吏,去河邊找鬼。 笑死替蛉,一個(gè)胖子當(dāng)著我的面吹牛贯溅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播灭返,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼盗迟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了熙含?” 一聲冷哼從身側(cè)響起罚缕,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎怎静,沒想到半個(gè)月后邮弹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚓聘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年腌乡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夜牡。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡与纽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出塘装,到底是詐尸還是另有隱情急迂,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布蹦肴,位于F島的核電站僚碎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏阴幌。R本人自食惡果不足惜勺阐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望矛双。 院中可真熱鬧渊抽,春花似錦、人聲如沸议忽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至毛雇,卻和暖如春嫉称,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背灵疮。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國打工织阅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人震捣。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓荔棉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蒿赢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子润樱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

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