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.
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 .
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:
ici si vous obtenez un dossier (portant le même nom que le fichier .ipa) contenant les sous-dossiers suivants:
alors vous êtes prêt à partir, cependant si vous ne voyez que le dossier Payload
dans .. alors vous devez essayer à nouveau
aussi quelques pointeurs
SwiftSupport
à l'intérieur de l'archive comme suggéré ici .. mais j'ai eu toutes sortes d'effets secondaires .. n'a pas fonctionné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
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.
Solution en cinq étapes:
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;)
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>
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.
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.
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.
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.
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.
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 :)
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.
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:
Hurrey !!! Votre problème sera résolu :) :) :)
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 ...
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.
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!