web-dev-qa-db-fra.com

Support Swift non valide/Le dossier SwiftSupport est vide

Environnement: Xcode 7 GM

J'ai téléchargé l'application iOS avec succès en utilisant Xcode sans erreur. Cette application est écrite en Objective-C et Swift.

Cependant, immédiatement après le téléchargement réussi, j'ai reçu ce courrier électronique d'Apple indiquant cette erreur:

Support Swift non valide - Nous avons découvert un ou plusieurs problèmes liés à votre livraison récente pour XXXXX (nom de mon application). Pour traiter votre livraison, les problèmes suivants doivent être corrigés:

Support Swift non valide - Le dossier SwiftSupport est vide. Reconstruisez votre application à l'aide de la version publique (GM) actuelle de Xcode et renvoyez-la.

Une fois ces problèmes corrigés, vous pouvez ensuite renvoyer le fichier binaire corrigé.

Quelqu'un a une solution contre ce problème?

J'ai déjà confirmé les problèmes ci-dessous.

Les bibliothèques "SwiftSupport/iphoneos /" dans les archives (fichier .xcarchive) correspondent exactement à "Produits/Applications/myApp.ipa/Frameworks /"

Mon paramètre "Architectures valides" est "$ (ARCHS_STANDARD)" et affiche "armv7k".

Le profil de provisioning est défini sur Dev et Release, qui ont été créés dans iTunes connect, respectivement.

Et, dans mon "Schéma d'édition", la cible de test n'est pas cochée dans Archive.

30
Tsuyoshi Endo

note importante: cela ne fonctionne que pour les projets qui ne pas utilisent Swift, voir comment ci-dessous

Je viens de rencontrer le même problème et de le résoudre en apportant la modification suivante: Si vous aviez auparavant des fichiers Swift dans votre projet, puis que vous les supprimiez, il vous suffit de définir "Le contenu incorporé contient du code Swift" sur NO dans les options de construction . 

55
Lixu

Il y a beaucoup de réponses contradictoires sur cette page .. ce qui a bien fonctionné pour moi a été celui mentionné ici , qui consiste simplement à sélectionner une option de déploiement de sauvegarde pour iOS app store (je ne suis en fait pas intéressé par une version de store app .. Je veux simplement pousser une version pour test interne testflight) ..

cela étant dit, j’ai un moyen de vérifier que votre ipa sera approuvé ou non avant de le soumettre:

  • faites glisser le fichier .ipa dans un nouveau dossier (appelez-le analyse)
  • faites un clic droit sur le fichier ipa et renommez-le en .Zip (confirmez la boîte de dialogue pour utiliser .Zip)
  • double-cliquez sur le fichier Zip

ici si vous obtenez un dossier (portant le même nom que le fichier .ipa) contenant les sous-dossiers suivants:

  • charge utile
  • swiftSupport
  • Symboles

 enter image description here

alors vous êtes prêt à partir, cependant si vous ne voyez que le dossier Payload dans .. alors vous devez essayer à nouveau

aussi quelques pointeurs

  • J'ai essayé de régler "Contenu incorporé contenant le code Swift" sur NON, cela n'a fonctionné qu'une seule fois, puis a cessé de fonctionner après cela.
  • Je me suis assuré que je n'avais aucune erreur de cocoapod .. cela n'a pas aidé non plus
  • J'ai essayé d'ajouter manuellement le dossier SwiftSupport à l'intérieur de l'archive comme suggéré ici .. mais j'ai eu toutes sortes d'effets secondaires .. n'a pas fonctionné

conclusion

Je pense que cela est dû à un bug avec xcode (l'écriture avec Xcode 8.0 build (8A218a) .. alors continuez à tenter votre chance jusqu'à ce que ça marche .. mais ne vous attendez pas à une explication solide

14
abbood

lorsque vous essayez d’exporter après "Xcode-> Produit-> Archiver" .__

Le même problème m'a confondu quelques jours, le réglage ci-dessus peut résoudre ce problème.

peu importe "contenu incorporé contient du code Swift" est oui ou non.

14
jdhuang

Solution en cinq étapes:

  1. Allez dans les paramètres de construction et faites flag Le contenu incorporé contient le code Swift ->OUI, si votre code contient du code Swift partiel ou est entièrement créé en Swift
  2. Archivez votre construction avec Xcode-> Produit-> Archive
  3. Exportez la version d'archive, vous verrez soudainement que la différence est de plus de 40 Mo. XCode a ajouté le dossier SwiftSupport qui était manquant.
  4. Maintenant, téléchargez cette version à l'aide du chargeur d'applications
  5. Si cela ne fonctionne pas, vérifiez que, si vous avez plusieurs XCodes sur votre système, goto Xcode-> Préférences-> Emplacement-> Commande Lignes Outils a le même Xcode ou le même Xcode dans le menu déroulant sélectionné sur lequel vous avez fait le codage & vola c'est fait.

Ceci est légèrement un inconvénient car Swift porte le bagage et doit être compatible avec la version antérieure et le code Objective C.

Mes nombreuses heures ont été perdues et j'espère que vous trouverez cela utile;) 

10
Rein rPavi

Cette erreur peut survenir si vous utilisez xcodebuild pour exporter l'IPA sans spécifier l'option -exportOptionsPlist. 

Voir xcodebuild -help pour les clés disponibles, mais vous voulez probablement un plist avec au moins la clé de méthode définie sur "app-store", comme ceci:

<?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>method</key>
    <string>app-store</string>
</dict>
</plist>
6
Jon N

Je suis aux prises avec cela pendant plusieurs heures et voici ce qui a fonctionné pour moi.

Dans l'archive, Xcode n'a pas copié les bibliothèques Swift dans SwiftSupport/iphoneos bien que "Embedded Content Contains Swift Code" ait été défini sur le projet pour toutes les cibles. Il n'a pas non plus copié les bibliothèques Swift dans "AppName.app/Frameworks" . J'ai donc dû le faire manuellement dans les archives avant de soumettre:

copier "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/iphoneos/lib*" vers "Archive_folder/Products/Applications/AppName.app/Frameworks" and "SwiftSupport/iphoneos"

Si votre application dispose également d'une application de surveillance

copie

"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/watchos" into "Archive_folder/SwiftSupport/watchos" et "Archive_folder/Products/Applications/AppName.app/Watch/AppName WatchKit App.app/Frameworks"

Ensuite, soumettez l'application.

2
Ken

L'utilisation de Save for iOS App Store Deployment au lieu de Save for Ad Hoc Deployment L'option d'exportation Xcode a résolu ce problème pour moi. Contre-intuitivement, vous devez utiliser la première option, même pour les générations TestFlight.

2

Réglage "Le contenu incorporé contient le code Swift" à $(inherited) a fonctionné pour moi. L'avertissement après l'exécution de la commande CocoaPods pod install m'a aidé à le découvrir.

[!] The `applewatch Extension [Debug]` target overrides the `EMBEDDED_CONTENT_CONTAINS_Swift` build setting defined in `Pods/Target Support Files/Pods-applewatch Extension/Pods-applewatch Extension.debug.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or  <--------------
- Remove the build settings from the target.
1
Blank

Voici ce que je fais maintenant pour résoudre ce problème depuis que ma méthode ci-dessus a cessé de fonctionner. N'oubliez pas que l'application principale de mon code est Obj-C et que l'application de surveillance est Swift.

  1. Assurez-vous que "Le contenu incorporé contient du code Swift" est défini sur:
    • OUI pour la cible de l'application
    • NON pour l'extension WatchKit
    • OUI pour Watchkit App
  2. Après l'archivage, mon XCode ne créera pas le "[dossier d'archives]/SwiftSupport/iphoneos", mais créera et remplira le "[dossier d'archives]/Produits/Applications/[nom de l'application] .app/Watch/\ WatchKit\App.app/Frameworks "avec les dylibs Swift. J'ai donc créé le lien virtuel suivant:

    ln -s "[dossier d'archives] /Products/Applications/.app/Watch/\WatchKit\App.app/Frameworks" "[dossier d'archives]/SwiftSupport/iphoneos"

Ensuite, lorsque je soumets via XCode Organize, il est accepté sans erreur.

Si vous copiez simplement les fichiers plutôt que de les lier, vous risquez que l'application Watch dépasse la limite de 50 Mo.

0
Ken

Après avoir essayé toutes ces solutions, je l’ai passé de manière chanceuse. Mais je pense que ce lien est bon pour vous Support Swift non valide/implémentation non valide de Swift . Je suis ces étapes puis redémarre mon MAC, tout va bien maintenant :)

0
Mike Htba

Soumission de la construction de l'App Store Problème:

Support Swift non valide - Le dossier SwiftSupport est manquant. Reconstruisez votre application à l'aide de la version publique (GM) actuelle de Xcode et renvoyez-la.

Solution:

Dans la plupart des cas, nous avons constaté ce problème en raison de la soumission d'une application via App Loader et de notre pratique habituelle transformer l'IPA en organiseur> Archive d'applications> Afficher dans le Finder> Afficher le contenu du package> Produits> Applications> OurProjectName.app dans copier cette application dans le dossier Payload, la compresser et créer un fichier ipa à soumettre sur l'App Store à l'aide d'App Loader. Cela ne pose pas de problème si vous ne soumettez que des fichiers contenant des projets Objective C.

Cependant, il y a des changements si votre projet contient des classes Swift et leur utilisation. Si votre projet contient des classes Swift avec un projet Objective C, la structure de contenu IPA a légèrement changé en tant que capture d'écran jointe.

 enter image description here

 enter image description here

Pour résoudre ce problème, soumettez l'application directement à partir de Xcode [OR] si vous souhaitez soumettre une application via App Loader avant la première exportation ipa à l'aide de l'option Exporter de l'organisateur Xcode et envoyez ces fichiers ipa à l'App Store. via App Loader. 

Voir la capture d'écran de référence comme ci-dessous:

 enter image description here

Hurrey !!! Votre problème sera résolu :) :) :) 

0
Sandip Patel - SM

Vous obtenez également cette erreur lorsque vous téléchargez une ipa ayant un plist avec export_method défini sur ad-hoc au lieu de app-store sur iTunes ...

0
TheEye

Définir Toujours incorporer les bibliothèques standard Swift à Oui n'est nécessaire que pour les cibles Objective-C qui sont liées à vos propres cadres qui dépendent de Swift. Dans les cas où vous ne liez pas (c.-à-d. Utilisez) un cadre interne qui dépend de Swift, Xcode incorporera les bibliothèques standard Swift dans votre archive tant que il y a au moins une occurrence d'importation Swift. bibliothèque standard dans un fichier Swift faisant partie de la cible de construction.

En d’autres termes, si votre cible a un fichier Swift qui n’importe aucune bibliothèque Swift standard –– via "import Foundation", par exemple ––, alors Xcode ne copie pas les bibliothèques Swift Standard dans l’archive.

La solution à ce problème consiste à s'assurer qu'au moins un des fichiers Swift de votre cible importe une bibliothèque standard Swift (par exemple, "import Foundation").

Daniel Jalkut a publié un article très informatif sur les dépendances Swift qui met en lumière ce problème.

0
BigSauce

Vous devez choisir l'option "Enregistrer pour le déploiement du iOS App Store" au moment de l'exportation du fichier ipa.  enter image description here

0
Pranit

Mon problème était que j'utilisais un profil adhoc pour soumettre à TestFlight (il doit s'agir d'un profil d'approvisionnement de distribution). Grands messages d'erreur Apple!

0
Radek Czemerys