Soumission d'applications iOS: prise en charge 64 bits manquante

91

J'ai envoyé une application hier pour examen, sans problème. J'ai alors réalisé que j'avais une très petite solution à faire (changer le niveau de zoom maximum d'une carte de 19 à 18, rien d'autre), j'ai donc supprimé le binaire d'iTunes Connect et essayé de le soumettre à nouveau.

Maintenant, j'ai cet avertissement:

warning_xcode

Je ne comprends pas pourquoi, car mes architectures sont:

  • architectures: armv7
  • architectures valides: armv6, armv7, armv7s, arm64

L'application fonctionne correctement dans le simulateur. Si j'essaie d'utiliser les architectures standard (armv7, arm64) comme recommandé dans l'avertissement, alors l'application ne se construira pas et j'obtiens:

  • Symboles non définis pour l'architecture x86_64
  • ld: symbole (s) introuvable (s) pour l'architecture x86_64

J'utilise la lib route-me, et je définis les mêmes paramètres d'architecture.

Tim Autin
la source
Nous avons aussi ce problème. :(
Azik Abdullah
Aussi depuis hier seulement?
Tim Autin
1) essayez d'effacer DerivedData pour Xcode après avoir modifié cela; 2) Peut-être utilisez-vous une API externe, un SDK, un framework, etc. plus
ancien
@Tim Avez-vous réussi à résoudre ce problème? pouvez-vous s'il vous plaît poster une solution pour cela?
user2056563
Salut, désolé je n'ai pas trouvé la solution et je ne travaille plus sur ce projet. Pour l'instant, ce n'est qu'un avertissement, j'ai donc pu soumettre l'application.
Tim Autin

Réponses:

106

Utilisez " Standard architectures" comme ceci:

  • Architecture: arm7 "Architectures standards", arm64
  • Architectures valides: " arm64 ", armv7 ...
  • Construire une architecture active uniquement - NON (spécialement ... si votre appareil connecté n'est pas compatible arm64)

comme ça:

entrez la description de l'image ici

  • De plus, le débranchement des iphones et des ipads du mac est connu pour aider, surtout s'il s'agit de versions 32 bits.
TonyMkenu
la source
2
Merci pour votre réponse, mais comme indiqué dans ma question, j'ai déjà essayé cela, et le projet ne se compile pas avec ces paramètres: /
Tim Autin
3
@Tim, oui moi aussi j'avais armv7 and arm64dans Architechtures. Néanmoins, un avertissement de support 64 bits manquant se produit lors de la validation de l'application pour la soumission.
Azik Abdullah
@NAZIK avez-vous arm64 dans les deux lignes (architectures et architectures valides)? J'ai eu la même erreur et c'était la solution
TonyMkenu
@Tim essaie de nettoyer vos DerivedData et vérifiez votre dernier framework externe ou SDK s'ils prennent en charge 64 bits
TonyMkenu
3
Assurez-vous également que votre appareil n'est PAS connecté lors de l'archivage de la version finale. Voir la réponse @powertoold ci-dessous ( stackoverflow.com/a/26848865/1715004 )
Filipe Borges
68

Après avoir confirmé les architectures correctes, assurez-vous que votre appareil n'est PAS connecté à votre ordinateur lors de l'ARCHIVAGE de la version finale à soumettre à l'App Store.

La raison pour laquelle cet avertissement apparaît est que l'appareil que vous avez connecté n'est probablement pas compatible arm64.

powertoold
la source
4
Chapeau! : D vous avez sauvé mon temps
Vaibhav Limbani
1
Une grande aide !! Cela m'a fait gagner beaucoup de temps sur celui-ci. Bon conseil pour mettre à jour d'anciennes applications.
harry
Je pense que vous pouvez garder vos appareils non 64 bits connectés si vous modifiez le paramètre de construction Build Active Architecture Onlysur No. Cela forcera xcode à construire le binaire 64 bits quel que soit le périphérique connecté.
jxmallett
3
En plus de la réponse de @jxmallett, assurez-vous que votre archive de configuration de schéma est définie sur Release, dans laquelle le Build Active Architectureest défini sur No. Set Archive Scheme
KarenAnne
1
Pour info, j'ai dû débrancher mon appareil, passer au simulateur, puis revenir à "Appareil iOS" pour que cela fonctionne.
nwkeeley
37

Comme l'a écrit Tony, il est important d'avoir dans les deux lignes ces paramètres. Étant donné que mon projet (et évidemment le vôtre) a été créé avant l'ajout d'arm64 au standard, il n'est pas reflété dans "Architectures valides" même s'il est affiché comme Standard.

Ce que j'ai fait:

  • Je suis allé à la configuration Projet (vs cible)
  • Dactylographié « arm64 » dans les Architectures valides (il est automatiquement répercuté dans les cibles et les schémas

Après le nettoyage / la construction, je reçois même des avertissements concernant une conversion incorrecte de float en CGFloat, etc., donc les paramètres sont évidemment appliqués.

L'avertissement de validation a également disparu!

entrez la description de l'image ici

Nick Entin
la source
1
> non reflété dans "Architectures valides" même s'il est affiché comme Standard C'était le point pour moi. THX!
Romain
1
Au cas où cela aiderait les autres, j'ai dû changer à la fois dans Project et Target pour me rendre au travail
djburdick
@djburdick Merci. Cela a fonctionné pour moi quand rien d'autre n'a fonctionné.
Dave Chambers
27

Débranchez votre appareil physique de Mac. Dans XCode sur la liste des appareils, choisissez Appareil iOS et créez à nouveau une archive. Cela a fonctionné pour moi.

hrast
la source
5

Aujourd'hui, je résous ce problème avec les étapes suivantes:

Paramètres du bâtiment:

Architectures: Architectures standard (arm7, arm64) - $ (ARCH_STANDARD)

Architectures valides: armv7 armv7s arm64

  1. Nettoyez et créez votre application avec l'iPhone connecté
  2. Déconnectez votre iPhone et vérifiez la barre supérieure si elle est dans "Appareil iOS"
  3. Archiver
  4. Valider et soumettre
Léonel Folmer
la source
@ Timuçin. Désolé pour ma réponse tardive, vous avez raison: armv7 armv7s arm64.
Leonel Folmer
3

Créez simplement un nouveau projet en utilisant la dernière version de xCode et recherchez les paramètres de construction. Le nouveau projet créé à l'aide de la dernière version prend en charge 64 par défaut.

entrez la description de l'image ici

Kirit Vaghela
la source
moins de 2% des utilisateurs utilisent iOS 6 ou moins. developer.apple.com/support/appstore
Kirit Vaghela
2

D'accord, c'était insensé. J'ai essayé chaque réponse. Mais cela n'a fonctionné que lorsque j'ai placé arm64avant armv7et armv7sdans des architectures valides.

PS: xcode version : 7.2

prad
la source
1
Ouaip. ce n'est qu'alors et seulement après avoir connecté un périphérique que le journal des erreurs a été affiché. Ensuite, quelques lignes de code obsolètes et nécessitant une correction (rouge) et quelques problèmes avec la bibliothèque RSA sont apparus.
maxweber
1

J'ai résolu le problème en changeant,

Architectures: arm7, arm64

Architecture valide: arm7, arm64

Construire une architecture active uniquement: Oui

user3616535
la source
1

J'ai soumis le succès par config comme image: entrez la description de l'image ici

(Archivé avec un appareil réel)

Bkillnest
la source
1
Devrait définir le mode de libération sur non
ZYiOS
1

Je me suis débarrassé de chaque avertissement. J'ai tout traversé encore et encore. J'ai trouvé la réponse en un mot ci-dessus.

"Construire une architecture active uniquement - NON (spécialement ... si votre appareil connecté n'est pas compatible arm64)"

Mon iPad n'est pas 64 bits. Mettez NON pour Build Active Architecture et ma soumission a fonctionné!

Homme de montagne
la source
0

Modifiez votre cible de développement iOS à au moins 5.1.1 ou supprimez le paramètre d'architecture standard et réappliquez-le. Vous avez peut-être vu un avertissement indiquant que arm64 n'est pas compatible avec votre cible de construction. Sur la page de présentation, vérifiez à la fois les paramètres de "cible de déploiement" de build et de cible. Dans mon cas, l'objectif était de 6,0, mais le projet était de 5,0.

Vérifiez également «Architectures valides» dans votre cible et dans votre projet. J'avais les bons réglages sur le projet mais pas sur la cible. Après cela, cela a fonctionné pour moi.

Basculez entre projet / cible sur la page de présentation dans le coin supérieur gauche de la boîte.

user1122069
la source
Vous voulez vraiment dire 5.1.1? 5.1 n'est pas assez récent?
Dirk
Ça fait longtemps. Je ne connais pas ou ne me souviens pas de la logique de cela. Suivez simplement les étapes et quelque chose peut revenir à sa place. Fiddle avec les architectures et toutes les pages mentionnées.
user1122069
0

Veuillez cocher l'option Construire une architecture active. Réglez-le sur NON. Ça marche pour moi.

PRITAM SATPUTE
la source