Xcode 8: Comstackr avec iOS 9.3 base SDK?

J'ai mis à niveau mon application iOS vers Swift 3.0 dans Xcode 8.0 beta (8S128d). Je pensais que tout était prêt à aller et téléchargé sur iTunes Connect. Lorsque j'ai cliqué sur "Soumettre pour examen", il m'a donné une list de 26 erreurs, une pour chaque framework incorporé, telles que:

Valeur sdk non valide. La valeur fournie pour la partie sdk de LC_VERSION_MIN_IPHONEOS dans MyApp.app/Frameworks/libswiftFoundation.dylib est 10,0, ce qui est supérieur à la valeur maximale autorisée de 9.3.2.

Et une dernière erreur:

Les nouvelles applications et mises à jour d'applications doivent être créées avec les versions publiques (GM) de Xcode 6 ou version ultérieure, OS X et iOS SDK. Ne soumettez pas d'applications créées avec un logiciel bêta, y compris des versions bêta OS X.

D'accord, cela aurait été utile de savoir avant de mettre à jour mon application! Comment est-ce que je pourrais proposer cette application?


J'ai remarqué à propos de la modification du projet Base SDK d'iOS 10.0 à iOS 9.3 en copiant le SDK de base de Xcode 7.3.1 à Xcode 8:

/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk 

Et puis en modifiant le paramètre Base SDK dans les parameters de construction de Xcode 8. Cependant, il n'a pas reconnu le nouveau SDK (voir cette question) , même quand je l'ai entré manuellement, et l'ai compilé avec iOS 10.0 de toute façon. Est-il possible de comstackr avec l'ancien SDK? Ou dois-je returnner mon code à Swift 2?

Modification du SDK de base Xcode 8.0

Voici la solution rapide :

N'utilisez pas les versions bêta de Xcode pour soumettre des applications à des fins de publication. Il s'agit d'une version bêta pour une raison et ne doit pas être utilisée avec un code de production.

Envoi d'applications

Les applications créées à l'aide de versions bêta de Xcode ou conçues pour des versions bêta de systèmes d'exploitation ne seront pas acceptées sur l'App Store et le Mac App Store. Les applications que vous soumettez doivent être développées à l'aide de la dernière version de Xcode dans le Mac App Store et doivent être conçues pour les versions publiquement disponibles d'iOS, OS X et watchOS, sauf lorsque des graines GM sont disponibles. Quand une graine GM de Xcode devient disponible, utilisez-la pour développer votre application pour la soumission. Lorsque les semences GM d'iOS, OS X ou watchOS deviennent disponibles, créez votre application pour ces versions.

https://developer.apple.com/support/pre-release-software/

Re: D'accord, cela aurait été utile de savoir avant de mettre à jour mon application! Comment est-ce que je pourrais proposer cette application?

Utilisez la version actuelle ou GM de Xcode pour créer et soumettre votre application.

Malheureusement, il ne semble pas qu'il existe un moyen de changer la version du SDK dans Xcode Beta; Il peut s'agir d'un bug ou du fait qu'Apple veut que vous utilisiez le SDK bêta en même time que le logiciel bêta. Comme @ l'L'l l'a dit, il faut ouvrir l'application dans Xcode stable pour que l'App Store accepte la soumission.

Cependant, j'ai trouvé que rétrograder le projet à Swift 2 n'était pas exorbitamment difficile. Il ne m'a fallu qu'une heure pour "rétrograder" l'set du projet en corrigeant manuellement toutes les erreurs dans Xcode 7.3. Au cas où cela aiderait quelqu'un, les principaux templates que j'ai remarqué pendant le process étaient:

  • Changer les déclarations de fonction pour ne pas avoir de _ avant le premier argument, car le premier argument n'est pas anonyme dans Swift 3
  • Suppression du premier argument de tous les appels de fonction, ce qui implique parfois de renommer la fonction (y compris dans les delegates, qui parfois ne signalent pas d'erreur)
  • Modification de quelques propriétés label.isOn , telles que label.isOn à label.on
  • Ajout de NS avant plusieurs noms d'objects, tels que NSData et NSTimer, qui sont respectivement Data et Timer dans Swift 3, respectivement
  • "Downgrading" le Storyboard en le ré-enregistrant
  • Comstackr en utilisant Xcode-stable mais download avec Xcode-beta; Xcode-stable a eu des problèmes avec mes profils d'approvisionnement, mais il s'avère que peu importe la version que vous utilisez, téléchargez le file binary de l'organisateur