XcodeBuild 命令行打包

最近看了下命令行打包哩治,發(fā)現(xiàn)網(wǎng)上文章不全豁生,所以總結(jié)了下碧囊。

  • 1 進(jìn)入項(xiàng)目路徑
    cd /Users/chentao/Desktop/safeBoxApp/DamoApp
  • 2 清除
    xcodebuild clean -project /Users/chentao/Desktop/safeBoxApp/DamoApp/DamoApp.xcodeproj -configuration ${CONFIGURATION} -alltargets
  • 2 archive 生成xcarchive文件
    xcodebuild archive -project /Users/chentao/Desktop/safeBoxApp/DamoApp/DamoApp.xcodeproj -scheme DamoApp -archivePath bin/DamoApp.xcarchive
  • 3 根據(jù)相關(guān)配置的plist文件導(dǎo)出相關(guān)的ipa包
    xcodebuild -exportArchive -archivePath /Users/chentao/Desktop/safeBoxApp/DamoApp/bin/DamoApp.xcarchive -exportPath /Users/chentao/Desktop/safeBoxApp/DamoApp/DamoApp.a -exportOptionsPlist /Users/chentao/Desktop/safeBoxApp/DamoApp/ExportOptions_adoc.plist

上述內(nèi)容中 DamoApp是我項(xiàng)目的名字帚桩,ExportOptions_adoc.plist 是相關(guān)的配置內(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>compileBitcode</key>
    <false/>
    <key>method</key>
    <string>enterprise</string>
    <key>provisioningProfiles</key>
    <dict>
        <key>com.safeBox.keychan</key>
        <string>SafeBoxInhouseCer</string>
    </dict>
    <key>signingCertificate</key>
    <string>iPhone Distribution</string>
    <key>signingStyle</key>
    <string>manual</string>
    <key>stripSwiftSymbols</key>
    <true/>
    <key>teamID</key>
    <string>37DS582758</string>
    <key>thinning</key>
    <string>&lt;none&gt;</string>
</dict>
</plist>

打包的方式基本有四種,對(duì)應(yīng)的plist文件的一些參數(shù)也會(huì)不一樣

上架appstore:
method = app-store, compileBitcode = YES, uploadSymbols = YES;
企業(yè)證書(shū)包(企業(yè)內(nèi)部使用):
method = enterprise犹菱,compileBitcode = NO拾稳;
adoc包;
method = enterprise腊脱,compileBitcode = NO访得;
develope 包:
method = development,compileBitcode = NO陕凹;
請(qǐng)注意:項(xiàng)目證書(shū)所需手動(dòng)配置悍抑。

隨后發(fā)現(xiàn)一行行敲打指令很麻煩,就寫(xiě)了個(gè)python腳本代碼如下:

 #!/usr/bin/env python
import  subprocess

def arriveProject():
    archiviCmd ="cd /Users/chentao/Desktop/safeBoxApp/DamoApp";
    process = subprocess.Popen(archiviCmd,shell = True);
    process.wait()

    archivieReturnCode = process.returncode;
    if archivieReturnCode != 0 :

    else :
        cleanProject();

def cleanProject():
    archiviCmd ="xcodebuild clean -project /Users/chentao/Desktop/safeBoxApp/DamoApp/DamoApp.xcodeproj -configuration ${CONFIGURATION} -alltargets";
    process = subprocess.Popen(archiviCmd,shell = True);
    process.wait()

    archivieReturnCode = process.returncode;
    if archivieReturnCode != 0 :

    else :
        buildWordSapce();


def buildWordSapce():
    archiviCmd = "xcodebuild archive -project /Users/chentao/Desktop/safeBoxApp/DamoApp/DamoApp.xcodeproj -scheme DamoApp -archivePath /Users/chentao/Desktop/safeBoxApp/DamoApp/bin/DamoApp.xcarchive"
    process = subprocess.Popen(archiviCmd,shell = True);
    process.wait()

    archivieReturnCode = process.returncode;
    if archivieReturnCode != 0 :

    else :
        exportIpa();


def exportIpa():
    archiviCmd ="xcodebuild -exportArchive -archivePath /Users/chentao/Desktop/safeBoxApp/DamoApp/bin/DamoApp.xcarchive -exportPath /Users/chentao/Desktop/safeBoxApp/DamoApp/DamoAppIpa  -exportOptionsPlist /Users/chentao/Desktop/safeBoxApp/DamoApp/ExportOptions_appstore.plist";
    process = subprocess.Popen(archiviCmd,shell = True);
    process.wait()

    archivieReturnCode = process.returncode;
    if archivieReturnCode != 0 :

    else :
        cleanArchiveFile()
        cleanArchiveBin()


def cleanArchiveFile():
    archiviCmd ="rm -r -f /Users/chentao/Desktop/safeBoxApp/DamoApp/build";
    process = subprocess.Popen(archiviCmd,shell = True);
    process.wait()

    archivieReturnCode = process.returncode;
    if archivieReturnCode != 0 :
        print ("555555")

    else :

        print ("00000")

def cleanArchiveBin():
    archiviCmd ="rm -r -f /Users/chentao/Desktop/safeBoxApp/DamoApp/bin";
    process = subprocess.Popen(archiviCmd,shell = True);
    process.wait()

    archivieReturnCode = process.returncode;
    if archivieReturnCode != 0 :
    else :
def main():
    arriveProject()
if __name__ == '__main__':
    main()

最后杜耙,因?yàn)橛行╉?xiàng)目使用了cocapods搜骡,在這里面打包命令有些修改,如下:

cd /Users/chentao/Desktop/ehDEMO/DamoApp 
rm -r -f  build/
xcodebuild -workspace DamoApp.xcworkspace  -scheme DamoApp -archivePath build/DamoApp.xcarchive archive

xcodebuild -exportArchive -archivePath build/DamoApp.xcarchive -exportPath build -exportOptionsPlist ExportOptions_enterprise.plist
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末佑女,一起剝皮案震驚了整個(gè)濱河市记靡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌团驱,老刑警劉巖摸吠,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異嚎花,居然都是意外死亡寸痢,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)紊选,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)啼止,“玉大人,你說(shuō)我怎么就攤上這事兵罢∠追常” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵卖词,是天一觀的道長(zhǎng)仿荆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)坏平,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任锦亦,我火速辦了婚禮舶替,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘杠园。我一直安慰自己顾瞪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著陈醒,像睡著了一般惕橙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钉跷,一...
    開(kāi)封第一講書(shū)人閱讀 52,246評(píng)論 1 308
  • 那天弥鹦,我揣著相機(jī)與錄音,去河邊找鬼爷辙。 笑死彬坏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膝晾。 我是一名探鬼主播栓始,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼血当!你這毒婦竟也來(lái)了幻赚?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤臊旭,失蹤者是張志新(化名)和其女友劉穎落恼,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體巍扛,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡领跛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了撤奸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吠昭。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖胧瓜,靈堂內(nèi)的尸體忽然破棺而出矢棚,到底是詐尸還是另有隱情,我是刑警寧澤府喳,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布蒲肋,位于F島的核電站,受9級(jí)特大地震影響钝满,放射性物質(zhì)發(fā)生泄漏兜粘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一弯蚜、第九天 我趴在偏房一處隱蔽的房頂上張望孔轴。 院中可真熱鬧,春花似錦碎捺、人聲如沸路鹰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)晋柱。三九已至优构,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雁竞,已是汗流浹背钦椭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浓领,地道東北人玉凯。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像联贩,于是被迫代替她去往敵國(guó)和親漫仆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

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