Xcode9 xcodebuild export plist 配置

转载自:https://blog.csdn.net/andanlan/article/details/78113330


前言

在你的iOS团队中,如果在使用持续集成来完成自动化打包分发的工作,你可能会了解如何使用一些命令行工具来构建ipa文件,其中一款使用较为广泛的是xcodebuild。

在我们的团队中有部分打包工作就是使用的xcodebuild,脚本代码大概如下:

ipaName="${scheme}${buildConfiguration}"// archivexcodebuild-workspaceProjectName.xcworkspace-scheme${scheme}-configuration${buildConfiguration} clean archive-archivePath./${ipaName}.xcarchive// exportxcodebuild-exportArchive-archivePath${ipaName}.xcarchive-exportOptionsPlistexportOptions_dev.plist-exportPath./

exportOptions_dev文件如下:

以上配置在Xcode8及以下版本都可以正常运行的,在升级Xcode9以后上面的脚本会在export阶段出错。

一、现象

xcodebuild + Xcode9 

使用xcodebuild做打包构建时,执行exportArchive命令出错,错误信息:

error: exportArchive:"AppName.app"requires a provisioning profilewiththePush NotificationsandApp Groups features.Error Domain=IDEProvisioningErrorDomain Code=9"AppName.app"requires a provisioning profilewiththePush NotificationsandApp Groups features." UserInfo={NSLocalizedDescription="AppName.app" requires a provisioning profile with the Push Notifications and App Groups features., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}

// 或

"Error Domain=IDEProvisioningErrorDomain Code=9\"\"ios-simple-objc.app\" requires a provisioning profile.\"

UserInfo={NSLocalizedDescription=\"ios-simple-objc.app\" requires a provisioning profile., NSLocalizedRecoverySuggestion=Add a profile to the \"provisioningProfiles\" dictionary in your Export Options property list.}"

二、原因

Xcode9 的打包需要指定以下信息,才能完成export操作: 

- provisioningProfiles 

- compileBitcode 

- method 

- signingCertificate 

- signingStyle 

- stripSwiftSymbols 

- teamID 

- thinning

三、解决步骤

你需要使用Xcode9先手动构建一次,使用构建生成的plist配置就可以完成export操作。 

1. 使用Xcode9打开你的工程 

执行打包操作:Product -> Archive 

打包完成后执行export操作(其中会需要你手动选择你的相关provison profile等信息),Xcode9会自动生成exportOptionsPlist文件,同时拷贝到你生成的ipa包的同级目录下。

直接使用Xcode9自动生成的exportOptionsPlist文件来进行xcodebuild的export操作,或者拷贝文件内容到你原来的exportOptionsPlist文件。

// Xcode9 export 生成的文件

DistributionSummary.plist

ExportOptions.plist

AppName.ipa

Packaging.log

四、示例

你可能感兴趣的:(Xcode9 xcodebuild export plist 配置)