简体   繁体   中英

xcodebuild exportArchive: no applicable devices found

After upgrading to Xcode 8 with iOS 10, I get exactly this error. I am on latest El Capitan and using the following versions of ruby (I updated via rvm, same with 2.0.0 which is system version) and CFPropertyList:

Philipps-MacBook-Pro:mobile-sdk prakuschan$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]


Philipps-MacBook-Pro:mobile-sdk prakuschan$ gem list CF
*** LOCAL GEMS ***
CFPropertyList (2.3.3)

The xcodebuild -exportArchive command is executed in a shell script, and after a successful archive I get the following error:

** ARCHIVE SUCCEEDED **
2016-09-22 10:02:16.460 xcodebuild[10375:8369748] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/9y/r64c9wld0jx2yf3glsrzhhr00000gn/T/AppName_2016-09-22_10-02-16.456.xcdistributionlogs'.
2016-09-22 10:02:18.228 xcodebuild[10375:8369748] [MT] IDEDistribution: Step failed: <IDEDistributionThinningStep: 0x7fe435f9dfb0>: Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found." UserInfo={NSLocalizedDescription=No applicable devices found.}
error: exportArchive: No applicable devices found.
Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found." UserInfo={NSLocalizedDescription=No applicable devices found.}
** EXPORT FAILED **

When looking into the xcdistributionlogs, the IDEDistribution.standard.log contains the following lines at the very end:

2016-09-22 08:02:18 +0000 [MT] /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool exited with a signal 6
2016-09-22 08:02:18 +0000 [MT] ipatool JSON: (null)

I don't know if it is valuable, but this is the path to ipatool:

2016-09-22 08:02:17 +0000 [MT] Running /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool

Any help is highly appreciated. I already tried many suggestions found on google, but found no solution yet.

I was seeing the same issue. After searching through:

https://forums.developer.apple.com/thread/13446

And elsewhere for Xcode 7 similar issues. I realized this one is unique. You can fix it if you tweak the ipatool script in Xcode 8.

sudo vi /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool

And comment out this one line:

# Check the artwork idiom.
#return nil,"the device doesn't support the app's UIDeviceFamily" unless (deviceTraits.supportedIdioms & bundle.supportedIdioms).size > 0

Found via sleuthing the ipatool command in:

/var/folders/.../IDEDistribution.standard.log

You can search for these via:

$ sudo find /private/var -name "*.xcdistributionlogs"

Relevant detail / debugging steps: https://github.com/fastlane/fastlane/issues/8737

We had the same issue "No applicable devices found" after running

xcodebuild -exportArchive -archivePath ../bin/archive/GetSocialTestApp.xcarchive -exportPath ../bin/ -exportOptionsPlist ../../scripts/exportOptions.plist

Working solution : wrap xcodebuild with xcbuild-safe.sh from fastlane repo . Detailed solution described here .

As appeared, the problem was caused by rvm environment variables, xcbuild-safe.sh cleans them before executing xcodebuild .

Not working solutions that we tried:

  • modify ipatool script as described here
  • downgrade to ruby 2.0.0
  • install ruby gems CFPropertyList , sqlite3 that ipatool was complaining about

I was getting the Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found." with my enterprise project when including a third party framework. My exportOptionsPlist file contained the compileBitcode=NO entry but the project itself still had bitcode on.

I also used the log at /var/folders/.../IDEDistribution.standard.log and found a clearer error that lead me to the solution.

More info: https://developer.apple.com/library/content/technotes/tn2432/_index.html

Copy following and add it to end of your ~/.bashrc (~/.zshrc if you are using ZSH). and quit the terminal and start it again (must) .

unset RUBYLIB
unset RUBYOPT
unset BUNDLE_BIN_PATH
unset _ORIGINAL_GEM_PATH
unset BUNDLE_GEMFILE
unset GEM_HOME
unset GEM_PATH

FYI:

Since Xcode has a dependency to 2 external gems: sqlite and CFPropertyList More information https://github.com/fastlane/fastlane/issues/6495

We have to unset those variables for rbenv, rvm and when the user uses bundler Even if we do not use rbenv in some environments such as CircleCI, We also need to unset GEM_HOME and GEM_PATH explicitly. More information https://github.com/fastlane/fastlane/issues/627

That's it! Set the bitcode = no ,the error got fixed.😊

@Tom Harada answers worked for me but I wanted to find what was causing the default ipatool to break.

It was the Google Cast 3.2 SDK, which was missing an entry it the plist framework. Updating it to 3.3 solved the export issue.

Refs: https://code.google.com/p/google-cast-sdk/issues/detail?id=954 https://github.com/fastlane/fastlane/issues/6223#issuecomment-267343853

My build script have the same problem, and I check some framework that I added. There is a framework that include a plist file(the name is the same as Info.plist). So, I delete the Info.plist file, the build script work fine.

在此输入图像描述

Had a same issue with XCode 8.2.1

In my case the issue was reproducing on exporting an archive for either adhoc or appstore distribution with the following export info plist

<?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>TEAMID</string>
        <key>method</key>
        <string>ad-hoc</string> # or `app-store`
        <key>uploadSymbols</key>
        <true/>
        <key>compileBitcode</key>
        <false/>
        <key>uploadBitcode</key>
        <false/>
</dict>
</plist>

It turned out that one of the linked frameworks was compiled using bitcode. This was pointed out from the xcode export log: IDEDistribution.stadard.log :

error: Failed to verify bitcode in YandexMapKit.framework/YandexMapKit:
error: Bundle only contains bitcode-marker /var/folders/zb/ftpjx10s547ddmzm_ybqdm51xdv_t7/T/IDEDistributionThinningStep.NKQ/Payload/Avito.app/Frameworks/YandexMapKit.framework/YandexMapKit (armv7)

I had to manually recompile the YandexMapKit project into iphoneos - and iphonesimulator - frameworks and merge them into a universal framework

At first, you need to check that if you have installed sqlite3 and CFPropertyList with gem on your mac. Use these commands to review the result in your terminal:

  • gem list | grep sqlite3
  • gem list | grep CFPropertyList

if you print nothing, then you have to install them with sudo

  • sudo gem install sqlite3
  • sudo gem install CFPropertyList

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