使用xcodebuild命令進行自動化打包

1 修改xcodeproj/project.pbxproj 文件

這個文件修改的是項目的證書配置和描述文件配置

關鍵修改如下

對于打Release模式包的,找到這一段

        638234841AE62041001700C9 /* Release */ = {
            isa = XCBuildConfiguration;
            baseConfigurationReference = 6A6EBCC368D67FB5C2365F82 /* Pods-Toon.release.xcconfig */;
            buildSettings = {
                ....
                PRODUCT_BUNDLE_IDENTIFIER = com.test.enterprise.xxx
                PROVISIONING_PROFILE = "d73920ec-9178-4f26-a0b8-c89ca2bbea6d";
                PROVISIONING_PROFILE_SPECIFIER = com.test.enterprise.xxx
                DEVELOPMENT_TEAM = TLWP697Z5D;
                ....
            };
            name = Release;
        };

將這四個值配置成對應的證書和描述文件即可

2 構建archive包

  • 使用cocoapods管理第三方的工程使用這條命令打包

    xcodebuild archive -workspace 項目名稱.xcworkspace -scheme 項目名稱 -configuration Release -archivePath archive包存儲路徑 CODE_SIGN_IDENTITY="證書" PROVISIONING_PROFILE="描述文件UUID"
    
  • 未使用Pod管理第三方的工程使用這個

    xcodebuild archive -project 項目名稱.xcodeproj -scheme 項目名稱 -configuration Release -archivePath archive包存儲路徑 CODE_SIGN_IDENTITY=證書 PROVISIONING_PROFILE=描述文件UUID
    

證書去鑰匙串中查找彤侍,需要注意的是這里需要把證書的完整名字拷貝過來璃搜。

描述文件的UUID在下面會有介紹如何獲取

示例

 ? xcodebuild archive -workspace Test.xcworkspace -scheme Test -configuration Release -archivePath ~/Desktop/Test.xcarchive CODE_SIGN_IDENTITY="iPhone Distribution: Beijing Test Internet Technology Co. Ltd." PROVISIONING_PROFILE="d78212ec-9128-4f26-a428-c89ca5232bea6d"

3 導出ipa包

xcodebuild  -exportArchive 
            -archivePath archive文件的地址.xcarchive 
            -exportPath 導出的文件夾地址 
            -exportOptionsPlist exprotOptionsPlist.plist 
            CODE_SIGN_IDENTITY=證書 
            PROVISIONING_PROFILE=描述文件UUID
各參數(shù)說明
  • -archivePath 指定從哪里讀取archive包
  • -exportPath 指定ipa包導出后的放置位置
  • -exportOptionsPlist 該參數(shù)的值是一個plist文件的地址丙唧,打包時候的一些配置,該文件中的值如下
    • teamID - 值為證書的teamID
    • method - 指定打包方式,是內側包、企業(yè)包晋控、App Store包。值為下面幾個: enterprise姓赤、ad-hoc赡译、..
    • ...
  • CODE_SIGN_IDENTITY - 打包證書
  • PROVISIONING_PROFILE - 使用的描述文件

exportOptionsPlist在用xcode手動打包的時候會自動生成的,和ipa文件在同一個目錄不铆,可以拷貝來用蝌焚。也可以手動創(chuàng)建。文件中需要配置的值在上面已經說明誓斥。

示例

? xcodebuild -exportArchive -archivePath ~/Desktop/Test.xcarchive -exportPath ~/Desktop/ -exportOptionsPlist ~/WorkSpace/archive/ExportOptions.plist CODE_SIGN_IDENTITY="iPhone Distribution: Beijing Test Internet Technology Co. Ltd." PROVISIONING_PROFILE="d78212ec-9128-4f26-a428-c89ca5232bea6d"

通過xcodebuild命令查看項目設置

通過命令查看描述文件的詳細信息 包括UUID等信息

/usr/bin/security cms -D -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>AppIDName</key>
    <string>comtestenterprisexx</string>
    <key>ApplicationIdentifierPrefix</key>
    <array>
    <string>TLWP697Z5D</string>
    </array>
    <key>CreationDate</key>
    <date>2018-06-06T03:36:47Z</date>
    <key>Platform</key>
    <array>
        <string>iOS</string>
    </array>
    <key>IsXcodeManaged</key>
    <false/>
    <key>DeveloperCertificates</key>
    <array>
        <data>MIIFvjCCBKagAwIBAgIIS3zyrKjgso8wDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTYxMjI0MDkyNjA3WhcNMTkxMjI0MDkyNjA3WjCBvzEaMBgGCgmSJomT8ixkAQEMClRMV1A2OTdaNUQxSTBHBgNVBAMMQGlQaG9uZSBEaXN0cmlidXRpb246IEJlaWppbmcgU3lzd2luIEludGVybmV0IFRlY2hub2xvZ3kgQ28uIEx0ZC4xEzARBgNVBAsMClRMV1A2OTdaNUQxNDAyBgNVBAoMK0JlaWppbmcgU3lzd2luIEludGVybmV0IFRlY2hub2xvZ3kgQ28uIEx0ZC4xCzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtPL6A6upSWHyDFFuPEF+eM9fXXJicMaJU68AqdGVwloKUlS/WXPCDlDOTzL66r0i55eh91YK27WC733/TH0CBOvjT6O0jpPJLBDLzg/pMxlMD2jiKh0EOTdBQdoaDlnDZpQZ+ht5E4UudBYtzvf9C58Sit839RK43mvioZiBp4nMEUlSXRY3/S6gVlwkh4S2Lm7dLSXnX7WcoJBGi/ixXcCcE6vqNdcZ36ngs8lmWM/gJByEGNKzb4kaTkvLileYSo3cguhfrxf7Q1VGKIrL43YzHZ71Pkpeqdy5pTykKZH8RnnXhX65LlCWrJTkQsMO+qfv9tHdpbx360wD4ClkxQIDAQABo4IB4zCCAd8wPwYIKwYBBQUHAQEEMzAxMC8GCCsGAQUFBzABhiNodHRwOi8vb2NzcC5hcHBsZS5jb20vb2NzcDAyLXd3ZHIwMTAdBgNVHQ4EFgQU/jENRTZR9YaB3s7mnzHmn0bzU0YwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSIJxcJqbYYYIvs67r2R1nFUlSjtzCCAQ8GA1UdIASCAQYwggECMIH/BgkqhkiG92NkBQEwgfEwgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFuY2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wKQYIKwYBBQUHAgEWHWh0dHA6Ly93d3cuYXBwbGUuY29tL2FwcGxlY2EvMA4GA1UdDwEB/wQEAwIHgDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAzATBgoqhkiG92NkBgEEAQH/BAIFADANBgkqhkiG9w0BAQUFAAOCAQEAmeGtWRppAcYdOe7l6hEdzlQE1YT2BztljaLW38hkrhVU+omaaF8LEb3F58fZxSCOteEsaiyTkq9lgt/3wKbmzPVFW379az1+sxnk5sb+PHCrg7BvfVIlB9/1CljxYuGwwOWKkLL6MP/sAFInrBJkDYWt3NHvpe1aH0bT/3rVW2bkV4LWfcJlVPtGzAGNYOr4itL4wma3h9ryvVQb1Eiy+RWbn//QmJGavkuICh3cJ25/ywUR6sLMsIQLMyt+GcZdUMioXJn5RqDxSDlB3wArJkav2CDP7QN83m/bbplKdph+e/r0jRoHCTXPs2A4xnIkUIQJNkGGvdDvc0AFcV+kNQ==</data>
    </array>
    <key>Entitlements</key>
    <dict>
        <key>keychain-access-groups</key>
        <array>
            <string>TLWP697Z5D.*</string>
        </array>
        <key>get-task-allow</key>
        <false/>
        <key>application-identifier</key>
        <string>TLWP697Z5D.com.systoon.enterprise.milintoon</string>
        <key>com.apple.developer.associated-domains</key>
        <string>*</string>
        <key>com.apple.security.application-groups</key>
        <array>
        </array>
        <key>com.apple.developer.team-identifier</key>
        <string>TLWP543Z5D</string>
        <key>com.apple.external-accessory.wireless-configuration</key>
        <true/>
        <key>aps-environment</key>
        <string>production</string>
    </dict>
    <key>ExpirationDate</key>
    <date>2019-06-06T03:36:47Z</date>
    <key>Name</key>
    <string>com.markday.enterprise.test</string>
    <key>ProvisionsAllDevices</key>
    <true/>
    <key>TeamIdentifier</key>
    <array>
        <string>TLWP697Z5D</string>
    </array>
    <key>TeamName</key>
    <string>Beijing MarkDay Internet Technology Co. Ltd.</string>
    <key>TimeToLive</key>
    <integer>365</integer>
    <key>UUID</key>
    <string>d73234ec-9178-4f26-a0b8-c89ca2bbea6d</string>
    <key>Version</key>
    <integer>1</integer>
</dict>
</plist>%

這里面就有UUID只洒、TeamName等信息

描述文件存放的位置

/Users/用戶名稱/Library/MobileDevice/Provisioning Profiles

查看工程的信息

xcodebuild -list

輸出如下

Information about project "Toon":
    Targets:
        Toon
        ToonTests
        TNAOrgTest
        TNGroupChatTests
        TNShareExtension

    Build Configurations:
        Debug
        Debug_Automation_Test
        Release

    If no build configuration is specified and -scheme is not passed then "Release" is used.

    Schemes:
        jiaoyutong
        menchengtong
        milin
        TNAOrgTest
        TNShareExtension
        Toon
        ToonTests
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市劳坑,隨后出現(xiàn)的幾起案子毕谴,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件析珊,死亡現(xiàn)場離奇詭異羡鸥,居然都是意外死亡,警方通過查閱死者的電腦和手機忠寻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門惧浴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奕剃,你說我怎么就攤上這事衷旅。” “怎么了纵朋?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵柿顶,是天一觀的道長。 經常有香客問我操软,道長嘁锯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任聂薪,我火速辦了婚禮家乘,結果婚禮上,老公的妹妹穿的比我還像新娘藏澳。我一直安慰自己仁锯,他們只是感情好,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布翔悠。 她就那樣靜靜地躺著业崖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蓄愁。 梳的紋絲不亂的頭發(fā)上双炕,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音撮抓,去河邊找鬼雄家。 笑死,一個胖子當著我的面吹牛胀滚,可吹牛的內容都是我干的趟济。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼咽笼,長吁一口氣:“原來是場噩夢啊……” “哼顷编!你這毒婦竟也來了?” 一聲冷哼從身側響起剑刑,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤媳纬,失蹤者是張志新(化名)和其女友劉穎双肤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钮惠,經...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡茅糜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了素挽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔑赘。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖预明,靈堂內的尸體忽然破棺而出缩赛,到底是詐尸還是另有隱情,我是刑警寧澤撰糠,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布酥馍,位于F島的核電站,受9級特大地震影響阅酪,放射性物質發(fā)生泄漏旨袒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一术辐、第九天 我趴在偏房一處隱蔽的房頂上張望峦失。 院中可真熱鬧,春花似錦术吗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卓练,卻和暖如春隘蝎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背襟企。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工嘱么, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人顽悼。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓曼振,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蔚龙。 傳聞我的和親對象是個殘疾皇子冰评,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內容