简体   繁体   中英

xcodebuild -exportArchive: exportOptionsPlist error for key 'method': expected one of {}

I'm using command line xcodebuild tool to export ad-hoc distribution ipa file out of my archive like this:

xcodebuild -exportArchive -archivePath /path/Archive.xcarchive -exportPath /path -exportOptionsPlist /path/options.plist

However, this command fails with error

exportArchive: exportOptionsPlist error for key 'method': expected one of {}, but found ad-hoc

No mater what 'method' I provide in my export options plist, it always fails with this error. It also fails if I remove the 'method' option from the plist file.

I suspected xcodebuild tool initially, but it turned out the archive file was invaid. When I opened the archive file in Xcode and tried to export an ipa file manually, I noticed that "Upload to App Store" and "Validate" buttons were disabled. After clicking the "Export" button, it gave me two options: "Save Built Products" and "Export as an Xcode Archive", but there was no Export ad-hoc distribution and the other regular options.

It turned out there were few library files along my .app file in the archive. Xcode considers this a generic archive and not an app archive. Check the Build Phases in your project settings for copying header and library files.

For more details, see https://developer.apple. com/library/ios/technotes/tn2215/_index.html

I had this issue in one of my projects. After updating Cocoapods from 0.38.2 to 0.39.0 it was gone.

Also, I had a different related issue. Exporting was failing with the following error:

2015-10-22 17:16:12.568 xcodebuild[91172:2171408] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/_l/2rl169m16p717gzldvh7n0600000gq/T/MyDriveEU_2015-10-22_17-16-12.568.xcdistributionlogs'.
2015-10-22 17:16:12.860 xcodebuild[91172:2171408] [MT] IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7fbc13f0c970>: Error Domain=IDEDistributionErrorDomain Code=1 "The operation couldn’t be completed. (IDEDistributionErrorDomain error 1.)"
error: exportArchive: The operation couldn’t be completed. (IDEDistributionErrorDomain error 1.)

Error Domain=IDEDistributionErrorDomain Code=1 "The operation couldn’t be completed. (IDEDistributionErrorDomain error 1.)"

** EXPORT FAILED **

It turned out that xcodebuild didn't like teamID parameter I added to the exportOptions.plist . After I removed it, the app was exported successfully.

In my case one of my static libs did not have Skip Install enabled and this resulted in the same problem. When I set in xcode Skip Install to Yes for that project I fixed that problem.

I had the same issue since two days, The issue came from Apple certificates. Delete Apple Worldwide Developer Relations certification Authority from your keychain (would be expired at 14 Feb) and so renew it by download :

https://developer.apple.com/news/?id=02092016a

https://developer.apple.com/library/content/technotes/tn2215/_index.html#//apple_ref/doc/uid/DTS40011221-CH1-PROJ

Check the following reasons:

  • Your archive contains header files.
  • Your archive contains static libraries or frameworks.

Pavel P's solution was

In my case one of my static libs did not have Skip Install enabled and this resulted in the same problem. When I set in xcode Skip Install to Yes for that project I fixed that problem.

Along the same vein, I was calling "xcodebuild" and passing in SKIP_INSTALL=NO as an option.

eg,

xcodebuild clean analyze archive -workspace MyWorkspace.xcworkspace -scheme MyScheme -configuration Debug SKIP_INSTALL=NO -archivePath /MyPath/MyArchive.xcarchive

Removing SKIP_INSTALL=NO in this case fixed my particular situation.

In my case the command was failing because the method key was missing or wrong. According to the man page of xcodebuild this is the list of allowed methods:

app-store, validation, ad-hoc, package, enterprise, development, developer-id, and mac-application

Note that the default value is " development ". If you don't specify a method or you specify " developer-id ", then you need to provide also a valid teamID key which is reported in the CN of the certificate provided by Apple which is used to sign the application (the teamID is a alphanumeric string at the end of the CN field).

In our case the Apple certificate was only installed in the build machine and no developer could have it installed on the personal computer or VM. So in order to test the package creation and signature we created a self-signed certificate using the steps reported here . Anyway since the teamID was not present in our certificate we had to set the method to " mac-application ". In this case xcodebuild was not complaining and the package was generated correctly.

Our plist file was something like this:

<?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>teamID</key>
    <string>F4keTeamID0</string>
    <key>compileBitcode</key>
    <true/>
    <key>method</key>
    <string>mac-application</string>
</dict>
</plist>

Old thread but ran into this just today with Xcode 13.3 due to the .docarchive being added to the Products/Applications folder (both from Xcode and xcodebuild. In Xcode 13.2 and earlier, the documentation archive was not added to this folder so submissions and archive exports worked fine. As noted in tech note TN2215 , there can only be a single product.

Xcode 13.3 之前 Xcode 13.2 and earlier

Xcode 13.3 Xcode 13.3

One workaround is just to turn off the Build Documentation during 'Build' setting in Build Settings. That worked for me.

I had the same issue and discovered when looking in KeyChain that the certificate used for signing had been revoked. Archiving worked fine but when we came to -exportArchive we got this cryptic error. HTH.

This forum helped me to fix the issue.
https://forums.developer.apple.com/message/59201#59201

SOLUTION: change the key from 'method' to 'export_method' in the exportOptionsPlist.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM