web-dev-qa-db-fra.com

Comment une application binaire prend-elle en charge les applications 64 bits et 32 ​​bits?

Nous pouvons voir l'annonce Apple ici. . Selon cette documentation, nous pouvons soumettre le même binaire avec la prise en charge 32 bits et aussi 64 bits. J'ai trouvé une réponse de débordement de pile ici . Mais selon cette réponse, nous avons should définir deployment target as IO7+. Mais le doc Apple a dit, vous pouvez soumettre ceci avec le support de IOS 7 et de IOS 6? Ma question est la suivante: Comment pouvons-nous générer des fichiers binaires prenant en charge les versions 32 bits et 64 bits de la cible de déploiement IOS6 +?

Note: J'utilise xcode 5.0

Mise à jour:Question above is fixed by using xcode 5.0.2. Mais je me demande comment créer du code pour 32 bits et 64 bits. Je sais une chose, nous devons faire le code pour deux séparément dans certains temps. Mais How can I do?. Par exemple, si une méthode obsolète dans iOS 6 signifie, nous fournissons également du code pour iOS 6 et iOS 7. Dans le même cas également suivi ici ou faire une autre technique pour cela. 

12
Mani

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

Conversion de votre application en binaire 64 bits

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 les paramètres de votre projet pour prendre en charge iOS 5.1.1 ou une version ultérieure. Vous ne pouvez pas créer de projet 64 bits s’il cible une version iOS antérieure à iOS 5.1.

4. Modifiez le paramètre de construction Architectures de votre projet en "Architectures standard (y compris en 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 processus. Cependant, le compilateur ne fait pas tout le travail pour vous; Utilisez les informations contenues dans ce document pour vous guider dans la recherche 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 certaines modifications, telles que les conventions d'appel de fonction, ne sont visibles que lorsque votre application s'exécute sur un appareil.

7.Utilisez Instruments pour optimiser les performances de la mémoire de votre application.

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

La suite de ce chapitre décrit les problèmes fréquemment rencontrés lors du portage d'une application Cocoa Touch dans 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/ConvertualYconcept/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertualYconcept/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertualVotreAppto64-Bit.html#//Apple_ref/doc/uid/TP400131-CH3-

19
codercat

les applications iOS s'appuient sur une interface binaire d'application de bas niveau et sur les conventions de codage établies par le langage Objective-C et les infrastructures système. À partir de 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 importantes:

Dans le runtime 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’alignement de la mémoire plus strictes. Voir « Modifications des types de données .» Le moteur d'exécution 64 bits requiert l'utilisation de prototypes de fonctions appropriés lors d'appels de fonction. Voir « Modifications apportées à l'appel de fonction ».

interface binaire d'application (ABI)

Autres modifications du runtime 64 bits

Le jeu d'instructions 64 bits ARM est très différent du jeu d'instructions 32 bits. Si votre application inclut un code de langue d'assemblage, vous devez le réécrire pour utiliser le nouveau jeu d'instructions. Vous avez également besoin d'une description plus détaillée des conventions d'appel 64 bits dans iOS, car celles-ci ne correspondent pas exactement à la norme ARM. Pour plus d'informations, voir iOS Guide d'appel aux fonctions ABI .

A un niveau élevé, pour rendre votre code propre, vous devez procéder comme suit:

  1. Évitez d’attribuer des entiers longs de 64 bits à des entiers de 32 bits.
  2. Évitez d’affecter des pointeurs 64 bits à des entiers 32 bits.
  3. Évitez les troncatures de pointeurs et d’entiers longs lors d’opérations arithmétiques (ou d’autres problèmes arithmétiques causés par le changement de types d’entiers).
  4. Résoudre les problèmes d'alignement causés par les modifications de la taille des types de données.
  5. Assurez-vous que les structures de mémoire partagées entre les environnements d'exécution 32 bits et 64 bits partagent une présentation similaire.
  6. Réécrivez tous les codes de langage Assembly afin que votre code utilise les nouveaux opcodes et runtime 64 bits.
  7. Évitez de confier des fonctions variadiques à des fonctions prenant un nombre fixe de paramètres, ou inversement.
5
codercat

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 n’ai fait que ça, peut-être que c’est mieux, mieux c'est)

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 les paramètres de votre projet pour prendre en charge iOS 5.1.1 ou une version ultérieure. Vous ne pouvez pas créer de projet 64 bits s’il cible une version iOS antérieure à iOS 5.1.

Changez le paramètre de construction Architectures de votre projet en «Architectures standard (y compris en 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 processus. Cependant, le compilateur ne fait pas tout le travail pour vous; Utilisez les informations contenues dans ce document pour vous guider dans la recherche 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 certaines modifications, telles que les conventions d'appel de fonction, ne sont visibles que lorsque votre application s'exécute sur un appareil.

Utilisez Instruments pour optimiser les performances de la mémoire de votre application . Soumettez une application contenant les deux architectures pour approbation.

La suite de ce chapitre décrit les problèmes fréquemment rencontrés lors du portage d'une application Cocoa Touch dans l'environnement d'exécution 64 bits. Utilisez ces sections pour guider vos propres efforts pour étudier votre code.

Suivez le guide de prise en charge des architectures 32 et 64 bits par Apple

2
Retro

En ce qui concerne la première partie de la question - Base SDK devrait être "Latest iOS SDK" qui est iOS 7.0. La cible de déploiement minimale doit être iOS 6.0 ou vous ne pourrez pas sélectionner "Architectes standard, notamment 64 bits (armv7, armv7s, armv8)" pour les architectures. Après avoir sélectionné ces paramètres, votre application sera construite pour les versions 32 bits et 64 bits.

Pour ce qui est de la mise à jour - après avoir basculé sur des arcs 32/64 bits, analysez votre projet et corrigez les nouveaux avertissements qui peuvent apparaître. Puis 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. Les informations utiles se trouvent dans Guide d’Apple (le résumé de celui-ci se trouve dans la réponse @iDev).

MODIFIER

En fait, oui, minimum est 5.1.1, mais vous devez le définir manuellement ou définir une cible de déploiement inférieure à 6.0 et lorsque vous sélectionnez des architectures, incl. Xcode 64bit vous demandera de le définir comme 5.1.1. En tout cas, je ne sais pas pourquoi vous voudriez supporter 5.1.1 spécifiquement si vous voulez utiliser des arcs 64 bits.

0
Timur Kuchkarov

Le programme xcode 5 compilé contient deux codes binaires: 32 bits et 64 bits. Dans le système 32 bits, le code 32 bits sera appelé. Dans le système 64 bits, le code 64 bits sera appelé . En même temps, pensez que le même programme n’a que du code 32 bits, le système 64 bits contient deux frameworks: un système 32 bits, un système 64 bits. Lorsque le système 64 bits exécutant le programme 32 bits appelle le système 32 bits, cadre bit pour le support sous-jacent , l'exécution du programme 64 bits appellera le framework 64 bits pour le support sous-jacent. Vous trouverez plus de détails à ce sujet dans la documentation officielle d'Apple "Guide de la transition 64 bits pour Cocoa Touch".

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

  1. Définissez le périphérique de support dans 'ios7'

  2. "Architectures" dans "Paramètre de construction" remplacé par "Architectures standard (y compris 64 bits)". 

0
Dracuuula
0
user3279053