使用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包
-
使用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
各参数说明
-
-archivePath
指定从哪里读取archive包 -
-exportPath
指定ipa包导出后的放置位置 -
-exportOptionsPlist
该参数的值是一个plist文件的地址,打包时候的一些配置,该文件中的值如下- teamID - 值为证书的teamID
- method - 指定打包方式,是内侧包、企业包、App Store包。值为下面几个: enterprise、ad-hoc、..
- ...
-
CODE_SIGN_IDENTITY
- 打包证书 -
PROVISIONING_PROFILE
- 使用的描述文件
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