web-dev-qa-db-fra.com

xcodebuild exportArchive: aucun périphérique applicable trouvé

Après la mise à niveau vers Xcode 8 avec iOS 10, je reçois exactement cette erreur. Je suis sur le dernier El Capitan et j'utilise les versions suivantes de Ruby (j'ai mis à jour via rvm, idem 2.0.0 qui est la version système) et 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)

La commande xcodebuild -exportArchive est exécutée dans un script Shell et, après un archivage réussi, le message d'erreur suivant s'affiche:

** 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 **

Lorsque vous examinez les journaux xcdistribution, IDEDistribution.standard.log contient les lignes suivantes à la fin:

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)

Je ne sais pas si c'est utile, mais c'est le chemin vers ipatool:

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

Toute aide est grandement appréciée. J'ai déjà essayé de nombreuses suggestions trouvées sur Google, mais je n'ai pas encore trouvé de solution.

16
Philipp

Je voyais le même problème. Après avoir cherché dans: 

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

Et ailleurs pour Xcode 7 des problèmes similaires. J'ai réalisé que celui-ci est unique. Vous pouvez résoudre ce problème si vous peaufinez le script ipatool dans Xcode 8.

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

Et commentez cette ligne:

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

Trouvé via sleuthing la commande ipatool dans: 

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

Vous pouvez les rechercher via:

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

Étapes pertinentes pour le débogage: https://github.com/fastlane/fastlane/issues/8737

10
user560766

Nous avons eu le même problème "No applicable devices found" après avoir exécuté

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

Solution de travail: encapsulez xcodebuild avec xcbuild-safe.sh à partir de fastlane repo . Solution détaillée décrite ici .

Comme il est apparu, le problème était dû aux variables d'environnement rvm. xcbuild-safe.sh les nettoie avant l'exécution de xcodebuild.

Ne fonctionne pas solutions que nous avons essayées:

  • modifier le script ipatool comme décrit ici
  • rétrograder à Ruby 2.0.0
  • installez Ruby Gems CFPropertyList, sqlite3 dont ipatool se plaignait 
5
zasadnyy

J'obtenais le Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found." avec mon projet d'entreprise en incluant un framework tiers. Mon fichier exportOptionsPlist contenait l'entrée compileBitcode=NO mais le projet lui-même avait toujours le bitcode activé.

J'ai aussi utilisé le journal sur /var/folders/.../IDEDistribution.standard.log et j'ai trouvé une erreur plus claire qui m'a conduit à la solution.

Plus d'infos: https://developer.Apple.com/library/content/technotes/tn2432/_index.html

2
Nick

Copiez ce qui suit et ajoutez-le à la fin de votre ~/.bashrc (~/.zshrc si vous utilisez ZSH). et quittez le terminal et redémarrez-le (doit).

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

FYI:

Puisque Xcode a une dépendance à 2 gemmes externes: sqlite et CFPropertyList Plus d'informations https://github.com/fastlane/fastlane/issues/6495

Nous devons désélectionner ces variables pour rbenv, rvm et lorsque l'utilisateur utilise bundler Même si nous n'utilisons pas rbenv dans certains environnements tels que CircleCI, Nous devons également désélectionner explicitement GEM_HOME et GEM_PATH . informations https://github.com/fastlane/fastlane/issues/627

2
Kun Wang

C'est tout! Définissez le bitcode = no, l'erreur a été corrigée. ????

1
knight2016

Les réponses de @Tom Harada ont fonctionné pour moi, mais je voulais trouver ce qui causait la rupture de la variable ipatool par défaut.

C’était le SDK de Google Cast 3.2, auquel il manquait une entrée dans le framework Plist. La mise à jour à la version 3.3 a résolu le problème d'exportation.

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

0
Nicolas Braun

Au début, vous devez vérifier que, si vous avez installé sqlite3 et CFPropertyList avec gem sur votre mac . Utilisez ces commandes pour examiner le résultat dans votre terminal: 

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

si vous n'imprimez rien, vous devez les installer avec Sudo 

  • Sudo gem install sqlite3
  • Sudo gem install CFPropertyList
0
Bevis Liu

Avait un même problème avec XCode 8.2.1

Dans mon cas, le problème consistait à exporter une archive pour une distribution ad hoc ou appstore avec le plist info export suivant

<?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>

Il s'est avéré que l'un des frameworks liés a été compilé à l'aide de bitcode. Cela a été signalé à partir du journal d’exportation xcode: 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)

Je devais recompiler manuellement le projet YandexMapKit en iphoneos- et iphonesimulator- et les fusionner en un cadre universel

0
Tim

Mon script de construction a le même problème et je vérifie le framework que j'ai ajouté. Il existe une structure qui inclut un fichier plist (le nom est identique à celui d’Info.plist). Donc, je supprime le fichier Info.plist, le script de construction fonctionne correctement.

 enter image description here

0
riven