Comment Binary Single App prend en charge les applications 64 bits et 32 ​​bits

Nous pouvons voir l'annonce de pomme ici. . Selon ce document, nous pouvons soumettre le même binary avec un support 32 bits et 64 bits. J'ai trouvé une réponse de dépassement de stack ici . Mais selon cette réponse, nous should définir la deployment target as IO7+ . Mais apple doc a dit, vous pouvez soumettre cela avec IOS 7 et IOS 6 support? Ma question est, Comment pouvons-nous générer binary avec support 32 bits et 64 bits par cible de deployment IOS6 +?

Note: J'utilise xcode 5.0

Mise à jour: La Question above is fixed by using xcode 5.0.2 . Mais je suis confus comment puis-je faire du code pour 32 bits ainsi que 64 bits. Je sais une chose, nous devons faire le code pour deux séparément à certains moments. Mais How can I do? . Par exemple, si une méthode est déconseillée dans ios6, nous fournissons également du code pour ios 6 et ios7. Dans le même cas également suivi ici ou faire une autre technique pour cela.

Xcode peut créer votre application avec des binarys 32 bits et 64 bits afin qu'elle fonctionne sur tous les appareils exécutant iOS 7. Si vous souhaitez continuer à prendre en charge iOS 6, vous devez créer 32 bits uniquement. Le mois prochain, nous apporterons des modifications qui vous permettront de créer un binary d'application unique prenant en charge le 32 bits sur iOS 6, ainsi que le 32 bits et le 64 bits sur iOS 7.

Conversion de votre application en binary 64 bits

À un niveau élevé, voici les étapes à suivre pour créer une application qui cible les environnements d'exécution 32 bits et 64 bits:

1.Installez Xcode 5.0.1.

2.Ouvrez votre projet. Xcode vous invite à moderniser votre projet. La modernisation du projet ajoute de nouveaux avertissements et erreurs qui sont importants lors de la compilation de votre application pour 64 bits.

3. Mettez à jour vos parameters de projet pour prendre en charge iOS 5.1.1 ou version ultérieure. Vous ne pouvez pas créer un projet 64 bits s'il cible une version iOS antérieure à iOS 5.1.

4. Modifiez le paramètre de génération Architectures de votre projet sur "Architectures standard (y compris 64 bits)".

5.Mettez à jour votre application pour prendre en charge l'environnement d'exécution 64 bits. Les nouveaux avertissements et erreurs du compilateur vous guideront tout au long de ce process. Cependant, le compilateur ne fait pas tout le travail pour vous; Utilisez les informations contenues dans ce document pour vous guider dans l'étude de votre propre code.

6. Testez votre application sur du matériel 64 bits réel. iOS Simulator peut également être utile pendant le développement, mais certains changements, tels que les conventions d'appel de la fonction, ne sont visibles que lorsque votre application est en cours d'exécution sur un périphérique.

7.Utilisez Instruments pour régler les performances de la memory de votre application.

8.Envoyer une application qui inclut les deux architectures pour approbation.

Le rest de ce chapitre décrit les problèmes qui se produisent fréquemment lors du portage d'une application Cocoa Touch vers l'environnement d'exécution 64 bits. Utilisez ces sections pour guider vos propres efforts pour étudier votre code.

De https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertingYourAppto64-Bit.html#//apple_ref/doc/uid/TP40013501-CH3-SW1

Les applications iOS reposent sur une interface binary d'application de bas niveau et des conventions de encoding établies par le langage Objective-C et les frameworks du système. Depuis iOS 7, certains appareils iOS utilisent des processeurs 64 bits et offrent un environnement d'exécution 32 bits et 64 bits. Pour la plupart des applications, l'environnement d'exécution 64 bits diffère de l'environnement d'exécution 32 bits de deux manières significatives:

Dans l'environnement d'exécution 64 bits, de nombreux types de données utilisés par les frameworks Cocoa Touch (ainsi que le langage Objective-C lui-même) ont augmenté de taille ou ont des règles d'alignment de la memory plus ssortingctes. Reportez-vous à la section « Modifications apscopes aux types de données ». L'exécution 64 bits nécessite l'utilisation de prototypes de fonctions appropriés lors des appels de fonction. Voir " Changements apportés aux appels de fonction ".

interface binary d'application (ABI)

Autres modifications de l'exécution 64 bits

L'set d'instructions ARM 64 bits est significativement différent de l'set d'instructions 32 bits. Si votre application inclut un code de langue d'assembly, vous devez le réécrire pour utiliser le nouvel set d'instructions. Vous avez également besoin d'une description plus détaillée des conventions d'appel 64 bits dans iOS, car les conventions ne correspondent pas exactement à la norme ARM. Pour plus d'informations, consultez le guide d'appel de fonction iOS ABI .

À un niveau élevé, pour rendre votre code 64 bits propre, vous devez effectuer les opérations suivantes:

  1. Évitez d'affecter des entiers longs de 64 bits à des entiers de 32 bits.
  2. Évitez d'affecter des pointeurs 64 bits aux entiers 32 bits.
  3. Évitez les troncatures de pointeur et d'entier long pendant les opérations arithmétiques (ou d'autres problèmes arithmétiques causés par la modification des types entiers).
  4. Résoudre les problèmes d'alignment causés par les changements de taille des types de données.
  5. Assurez-vous que les structures de memory partagées entre les runtimes 32 bits et 64 bits partagent une disposition similaire.
  6. Réécrivez n'importe quel code de langage d'assemblage afin que votre code utilise les nouveaux opcodes et runtime 64 bits.
  7. Évitez de lancer des fonctions variadiques à des fonctions qui prennent un nombre fixe de parameters, ou vice versa.

À un niveau élevé, voici les étapes à suivre pour créer une application qui cible les environnements d'exécution 32 bits et 64 bits:

Installez Xcode 5.0.2 (je l'ai fait avec cela seulement, peut-être plus est mieux)

Ouvrez votre projet Xcode vous invite à moderniser votre projet. La modernisation du projet ajoute de nouveaux avertissements et erreurs qui sont importants lors de la compilation de votre application pour 64 bits.

Mettez à jour vos parameters de projet pour prendre en charge iOS 5.1.1 ou version ultérieure. Vous ne pouvez pas créer un projet 64 bits s'il cible une version iOS antérieure à iOS 5.1.

Modifiez le paramètre de génération Architectures de votre projet sur "Architectures standard (y compris 64 bits)".

Mettez à jour votre application pour prendre en charge l'environnement d'exécution 64 bits. Les nouveaux avertissements et erreurs du compilateur vous guideront tout au long de ce process. Cependant, le compilateur ne fait pas tout le travail pour vous; Utilisez les informations contenues dans ce document pour vous guider dans l'étude de votre propre code.

Testez votre application sur du matériel 64 bits réel. iOS Simulator peut également être utile pendant le développement, mais certains changements, tels que les conventions d'appel de la fonction, ne sont visibles que lorsque votre application est en cours d'exécution sur un périphérique.

Utilisez les instruments pour optimiser les performances de la memory de votre application. Soumettez une application qui inclut les deux architectures pour approbation.

Le rest de ce chapitre décrit les problèmes qui se produisent fréquemment lors du portage d'une application Cocoa Touch vers l'environnement d'exécution 64 bits. Utilisez ces sections pour guider vos propres efforts pour étudier votre code.

Suivez le guide pour soutenir l' architecture 32 et 64 bits par apple

Le programme xcode 5 compilé contenait deux code binary: 32 bits et 64 bits. Dans le système 32 bits appellera le code 32 bits.Dans le système 64 bits appellera le code 64 bits. Dans le même time, pensez à ce même programme a seulement le code 32 bits, le système 64 bits contenait deux framework: un 32 bits, un 64 bits. Lorsque le système 64 bits exécutant le programme 32 bits appellera le Le framework 32 bits pour le support sous-jacent, exécutant le programme 64 bits, appellera le framework 64 bits pour le support sous-jacent. Plus de détails, vous pouvez voir la documentation officielle d'Apple "Guide de transition 64 bits pour Cocoa Touch".

Utilisez xcode 5 peut être facilement compilé en 64. La procédure de base est la suivante.

  1. Définissez le périphérique de support sur "ios7"

  2. Les «architectures» dans «Build Setting» ont été remplacées par «Architectures standard (y compris 64 bits)».

Comme pour la première partie de la question – Base SDK devrait être "Latest iOS SDK" qui est iOS 7.0. La cible de deployment minimum doit être iOS 6.0 ou vous ne pourrez pas sélectionner "architectures standard incluant 64 bits (armv7, armv7s, armv8)" pour les architectures. Après avoir sélectionné ces parameters, votre application sera construite pour 32 bits et 64 bits.

En ce qui concerne la mise à jour – après le passage aux archs 32 / 64bit, parsingz votre projet et corrigez les nouveaux avertissements qui peuvent apparaître. Ensuite, testez votre application sur un appareil 64 bits réel (iPhone 5s / iPad Air / iPad mini rétine). Si votre application utilise iCloud, testez la synchronisation entre les périphériques 32 et 64 bits. L'information utile est dans le guide d'Apple (résumé à partir de là dans la réponse @iDev).

MODIFIER

En fait oui, le minimum est 5.1.1, mais vous devez le définir manuellement ou définir une cible de deployment inférieure à 6.0 et lorsque vous select architectures incl. 64bit Xcode vous requestra de le définir comme 5.1.1. Quoi qu'il en soit, je ne sais pas pourquoi vous voudriez soutenir 5.1.1 spécifiquement si vous voulez utiliser des arcs 64 bits.