Support Swift non valide - Les fichiers ne correspondent pas

116

Je viens de réécrire une application dans Swift 2. J'essaie de télécharger l'application sur iTunesConnect (via Xcode 7 GM) pour des tests internes.

J'ai lutté avec une erreur "Invalid Swift Support" pendant un certain temps ( qui a d'autres questions connexes ) ... mais maintenant c'est changé pour quelque chose d'un peu différent.

L'erreur d'Apple dit maintenant:

Assistance Swift non valide

Les fichiers libswiftCoreLocation.dylib, libswiftCoreMedia.dylib, libswiftCoreData.dylib, libswiftAVFoundation.dylib ne correspondent pas

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.app/Frameworks/libswiftCoreData.dylibworks, /Payload/AV.app/Frame. dylib

Assurez-vous que les fichiers sont corrects (?), Reconstruisez votre application et renvoyez-la.

Ne pas appliquer de post-traitement à

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.app/Frameworks/libswiftCoreData.dylibworks, /Payload/AV.app/Frame. dylib.

Je n'ai pas pu trouver d'erreurs similaires en recherchant "Ne pas appliquer le post-traitement", "Assurez-vous que les fichiers sont corrects, reconstruisez votre application et renvoyez-la", etc.

Quelqu'un sait-il comment je peux «S'assurer que les fichiers sont corrects» - ou - avoir d'autres recommandations? Je vous remercie.

Dan
la source
J'ai exactement le même problème. Des solutions?
Beny Boariu du
Vous démissionnez de cette application? S'agit-il d'un téléchargement direct depuis Xcode?
Andy
@Andy téléchargement direct depuis Xcode immédiatement après son archivage.
Dan le

Réponses:

82

Même problème ici. Je pense que c'est probablement un bogue des outils de développement, lié au Bitcode.

Je viens de trouver la solution de contournement pour cela.

  1. Archivez votre application avec le nouveau numéro de version :(
  2. Recherchez l'archive (fichier .xcarchive) dans le Finder à partir de l'organiseur «Afficher dans le Finder»
  3. Ouvrez le package et trouvez des répertoires comme Products/Applications/YourApp.ipa/Frameworks/etSwiftSupport/iphoneos/
  4. Copiez tous les libswiftXxx.dylibfichiers de SwiftSupport/iphoneos/dans Products/Applications/YourApp.ipa/Frameworks/et écrasez
  5. Maintenant, téléchargez sur l'App Store à partir de l'organisateur

Avec ce processus, je réussis à télécharger ma version. Maintenant, j'attends un examen.

REMARQUE:

J'utilise CocoaPods et l' ENABLE_BITCODEoption était NON.

crête de coq
la source
Quel SDK iOS ciblez-vous? Je pensais que vous ne pouviez pas vous soumettre au magasin avec le bitcode désactivé.
JAL
3
Dans mon cas, SwiftSupport / iphoneos / est vide.
Lim Thye Chean
2
La validation a réussi pour moi mais la compilation est toujours Processingaprès ~ 12 heures dans la section Avant-première d'iTunes Connect.
ldiqual
2
hé merci pour ça! Je reçois toujours un avertissement concernant le fichier d'analyse API trop volumineux cl.ly/image/0s0N0s441s0X - mais l'important est qu'il a toujours réussi et qu'il a pu entrer dans TestFlight.
ded
1
Que dois-je faire s'il n'y a pas de dossier SwiftSupport / iphoneos / dans mon .ipa?
Alexander Yakovlev
51

Edit: CocoaPods 0.39.0 a été publié, ce qui résout ce problème!

Comme @orkenstein l'a mentionné , il existe une solution plus simple en commentant du code dans Pod-frameworks.sh. J'inclus un peu plus de détails ici.

Dans le répertoire de votre projet Xcode, ouvrez Pods/Target Support Files/Pods/Pods-frameworks.sh

Commentez les lignes suivantes:

# Embed linked Swift runtime libraries
local basename
basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
local swift_runtime_libs
swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
for lib in $swift_runtime_libs; do
  echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
  rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
  code_sign_if_enabled "${destination}/${lib}"
done

=>

# Embed linked Swift runtime libraries
# local basename
# basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
# local swift_runtime_libs
# swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
# for lib in $swift_runtime_libs; do
#   echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
#   rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
#   code_sign_if_enabled "${destination}/${lib}"
# done

Économisez Pods-frameworks.shet vous devriez être prêt à partir!

DJ Tarazona
la source
4
Cela a fonctionné pour moi. Attention, si vous exécutez pod-install ou pod-update, vous devrez peut-être le commenter à nouveau!
Max Alexander du
Problème de Cocoapods ici: github.com/CocoaPods/CocoaPods/issues/4188 , vous pouvez essayer ce PR: github.com/CocoaPods/CocoaPods/pull/4221 avec ces instructions: guides.cocoapods.org/using/unreleased-features
ldiqual
mis à jour cocoaPods 0.39.0 et cela ne résout pas ce problème pour moi
nwales
@DJ Tarazona Merci pour votre recette !! cela a totalement fonctionné pour moi, même lorsque j'ai mis à jour le joyau des cocopodes avec la dernière version
Jorge Vicente Mendoza
16

Le correctif de ce problème a été fusionné et est disponible sur la dernière version de CocoaPods 0.39.0.beta.5

https://github.com/CocoaPods/CocoaPods/pull/4268

Pour obtenir la dernière version de CocoaPods, exécutez gem install cocoapods --pre

Sinon, suivez les instructions pour exécuter des fonctionnalités inédites: http://guides.cocoapods.org/using/unreleased-features

Une fois que vous avez la dernière version de CocoaPods, exécutez à pod installnouveau.

Will Y
la source
C'est le faiseur d'argent
tommybananas
Les larmes arrivent. Je vous remercie!
MQLN
L'erreur n'a pas à voir spécifiquement avec les CocoaPods; nous rencontrons le même problème et n'utilisons pas CocoaPods.
devios1
8

J'utilisais fastlane gym 1.9.0 pour créer mon application et elle a continué à être rejetée par Apple parce que les fichiers ne correspondaient pas, alors que si je téléchargeais via XCode 8, elle était acceptée. J'ai vérifié les bibliothèques swift dans le dossier de support swift de l'ipa et dans le dossier Frameworks, j'ai trouvé que les bibliothèques du dossier de support swift étaient pour swift 2.3 alors que dans le dossier Frameworks, c'était swift 3. Donc, dans mon fichier gym, j'ai ajouté la chaîne d'outils option:

gym(
  scheme: "CoCadre", 
  configuration: "Production Release",
  clean: true,
  use_legacy_build_api: false,
  toolchain: "com.apple.dt.toolchain.Swift_2_3"
)

* Notez que j'ai dû changer use_legacy_build_api en false pour utiliser l'option toolchain

Pour utiliser l'option Toolchain, vous devez définir use_legacy_build_api: false https://github.com/fastlane/fastlane/issues/6003#issuecomment-244792185

Zhong Huiwen
la source
Je vous remercie! J'utilise également Fastlane et Gym et cela a résolu le problème.
Eystein Bye
Merci, cela a également permis de résoudre le problème lors de l'utilisation de Gym. Veuillez noter que j'ai toujours pu utiliser cette solution avec use_legacy_build_api: true
Viktor Malyi
6

Il existe une solution un peu moins complexe, trouvée sur GitHub :

J'ai jeté un coup d'œil dans Pods-frameworks.sh et j'ai trouvé une section commentée comme:

Incorporer les bibliothèques d'exécution Swift liées
Commenter le bloc de code qui copie ces bibliothèques (et les signe par le code) semble avoir corrigé mes problèmes de soumission. Je n'ai pas encore plongé plus profondément pour voir si c'est juste leur copie qui cause les problèmes ou si c'est la signature de code. Je sors un peu de ma profondeur là-bas.

Orkenstein
la source
4
  1. Mettez à jour vos cocoapodes avec la dernière version, tapez sudo gem install cocoapodsterminal.
  2. Exécutez pod updatesous le répertoire de votre projet.
  3. N'oubliez pas de définir Activer Bitcode sur NON pour l' Debugoption de tous vos pods.
  4. Fixé

Le problème est résolu car le code suivant dans Pods-frameworks.sh:

# Embed linked Swift runtime libraries
local basename
basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
local swift_runtime_libs
swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
for lib in $swift_runtime_libs; do
  echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
  rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
  code_sign_if_enabled "${destination}/${lib}"
done

a été changé en:

# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
    local swift_runtime_libs
    swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
  for lib in $swift_runtime_libs; do
    echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
    rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
    code_sign_if_enabled "${destination}/${lib}"
  done
fi
Bartłomiej Semańczyk
la source
2

Ma solution pour cela:

J'utilise Reveal via Cocoapods et Reveal doit désactiver Bitcode. J'ai donc inclus Reveal (devrait fonctionner pour tout autre Framwork) uniquement pour Debug:

pod 'Reveal-iOS-SDK', :configurations => ['Debug']

Comme mon Reveal est désormais configuré uniquement pour le débogage, j'ai désactivé Bitcode uniquement pour le débogage.

entrez la description de l'image ici

Avec ces paramètres, tout fonctionne bien, sans aucun piratage ...

Urkman
la source
0

J'ai vu cette erreur se produire lors de l'intégration de bibliothèques qui ne prennent pas en charge le bitcode (comme la version stable actuelle de New Relic). La solution est soit de supprimer les bibliothèques, de désactiver le bitcode (et potentiellement de ne pas pouvoir soumettre au magasin), ou d'attendre les binaires mis à jour qui prennent en charge le bitcode de votre fournisseur de bibliothèque.

JAL
la source
0

L'erreur pour moi était que j'ai créé avec le profil Adhoc au lieu du profil App Store pour télécharger le spa sur l'App Store.

Jarora
la source