Xcode9 xcodebuild export plist 配置

前言

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

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

ipaName = "${scheme}${buildConfiguration}"
// archive
xcodebuild -workspace ProjectName.xcworkspace -scheme ${scheme} -configuration ${buildConfiguration} clean archive -archivePath ./${ipaName}.xcarchive
// export
xcodebuild -exportArchive -archivePath ${ipaName}.xcarchive -exportOptionsPlist exportOptions_dev.plist -exportPath ./

exportOptions_dev文件如下:





    method
    development
    teamID
    yourTeamID


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

一、现象

  • xcodebuild + Xcode9
    使用xcodebuild做打包构建时,执行exportArchive命令出错,错误信息:
error: exportArchive: "AppName.app" requires a provisioning profile with the Push Notifications and App Groups features.
Error Domain=IDEProvisioningErrorDomain Code=9
"AppName.app" requires a provisioning profile with the Push Notifications and App 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打开你的工程

    Xcode9 xcodebuild export plist 配置_第1张图片
    WX20170927-145849.png

  2. 执行打包操作:Product -> Archive


    Xcode9 xcodebuild export plist 配置_第2张图片
    BA2EB68B-F776-498D-BA7E-AE75D27047E8.png
  3. 打包完成后执行export操作(其中会需要你手动选择你的相关provison profile等信息),Xcode9会自动生成exportOptionsPlist文件,同时拷贝到你生成的ipa包的同级目录下。

Xcode9 xcodebuild export plist 配置_第3张图片
WX20170927-150056.png
Xcode9 xcodebuild export plist 配置_第4张图片
WX20170927-150109.png
Xcode9 xcodebuild export plist 配置_第5张图片
WX20170927-150124.png
Xcode9 xcodebuild export plist 配置_第6张图片
WX20170927-150209.png
  1. 直接使用Xcode9自动生成的exportOptionsPlist文件来进行xcodebuildexport操作,或者拷贝文件内容到你原来的exportOptionsPlist文件。
// Xcode9 export 生成的文件
DistributionSummary.plist
ExportOptions.plist
AppName.ipa
Packaging.log

四、示例





    compileBitcode
    
    method
    development
    provisioningProfiles
    
        com.xingshulin.abc
        abc_dev
        com.xingshulin.abc.NotificationServiceExtension
        abc-Notification-dev
    
    signingCertificate
    iPhone Developer
    signingStyle
    manual
    stripSwiftSymbols
    
    teamID
    yourTeamID
    thinning
    <none>


参考

New export options Plist in Xcode 9

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