知识总结

使用xcodebuild命令进行自动化打包

2018-08-16  本文已影响229人  一双鱼jn

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包

证书去钥匙串中查找,需要注意的是这里需要把证书的完整名字拷贝过来。

描述文件的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
各参数说明

exportOptionsPlist在用xcode手动打包的时候会自动生成的,和ipa文件在同一个目录,可以拷贝来用。也可以手动创建。文件中需要配置的值在上面已经说明。

示例

ᐅ 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
上一篇下一篇

猜你喜欢

热点阅读