Cómo la aplicación única binaria admite aplicaciones de 64 bits y 32 bits

Podemos ver el anuncio de Apple aquí. . De acuerdo con este documento, podemos enviar el mismo binary con soporte de 32 bits y también de 64 bits. Encontré una respuesta de desbordamiento de stack aquí . Pero de acuerdo con esta respuesta, should establecer el deployment target as IO7+ . Pero dice apple doc, ¿puedes enviar esto con IOS 7 e IOS 6? Mi pregunta es: ¿Cómo podemos generar binarys con soporte de 32 bits y 64 bits por el objective de implementación IOS6 +?

Nota: estoy usando xcode 5.0

Actualización: la Question above is fixed by using xcode 5.0.2 . Pero me confundo cómo puedo hacer código para 32 bits y 64 bits. Sé una cosa, debemos hacer el código para dos por separado en algunas ocasiones. How can I do? Pero How can I do? . Por ejemplo, si un método en desuso en ios6 significa, también proporcionamos el código para ios 6 y ios7. En el mismo caso también seguimos aquí o hacemos alguna otra técnica para esto.

Xcode puede build su aplicación con binarys de 32 bits y de 64 bits incluidos, por lo que funciona en todos los dispositivos que ejecutan iOS 7. Si desea continuar soportando iOS 6, tendrá que crear solo para 32 bits. El próximo mes haremos cambios que le permitirán crear un solo binary de aplicación compatible con 32 bits en iOS 6, así como con 32 bits y 64 bits en iOS 7.

Convertir su aplicación en un binary de 64 bits

En un nivel alto, aquí están los pasos para crear una aplicación que apunta tanto a los entornos de time de ejecución de 32 bits como a los de 64 bits:

1. Instale Xcode 5.0.1.

2. Abra su proyecto. Xcode le pide que modernice su proyecto. La modernización del proyecto agrega nuevas advertencias y errores que son importantes al comstackr su aplicación para 64 bits.

3. Actualice la configuration de su proyecto para admitir iOS 5.1.1 o posterior. No puede crear un proyecto de 64 bits si se dirige a una versión de iOS anterior a iOS 5.1.

4. Cambie la configuration de compilation de Arquitecturas en su proyecto a "Arquitecturas estándar (incluida la de 64 bits)".

5. Actualice su aplicación para admitir el entorno de time de ejecución de 64 bits. Las nuevas advertencias y compiler errors le ayudarán a guiarlo en este process. Sin embargo, el comstackdor no hace todo el trabajo por usted; use la información de este documento para ayudarlo a guiarlo a investigar su propio código.

6. Prueba tu aplicación en hardware de 64 bits real. iOS Simulator también puede ser útil durante el desarrollo, pero algunos cambios, como las convenciones de llamada a funciones, solo son visibles cuando su aplicación se ejecuta en un dispositivo.

7. Utilice Instrumentos para ajustar el performance de la memory de su aplicación.

8. Envíe una aplicación que incluya ambas architectures para su aprobación.

El rest de este capítulo describe los problemas que se presentan con frecuencia al portar una aplicación Cocoa Touch en el entorno de time de ejecución de 64 bits. Use estas secciones para guiar sus propios esfuerzos para investigar su código.

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

Las aplicaciones iOS se basan en una interfaz binaria de aplicación de bajo nivel y convenciones de encoding establecidas por el lenguaje Objective-C y los frameworks del sistema. A partir de iOS 7, algunos dispositivos iOS utilizan procesadores de 64 bits y ofrecen un entorno de time de ejecución de 32 y 64 bits. Para la mayoría de las aplicaciones, el entorno de time de ejecución de 64 bits difiere del entorno de time de ejecución de 32 bits de dos forms significativas:

En el time de ejecución de 64 bits, muchos types de datos utilizados por los frameworks Cocoa Touch (así como el lenguaje Objective-C en sí) han aumentado de tamaño o tienen reglas de alignment de memory más estrictas. Consulte " Cambios en los types de datos ". El time de ejecución de 64 bits requiere que se utilicen prototypes de function adecuados al realizar llamadas a funciones. Consulte " Cambios a la function de llamada ".

interfaz binaria de aplicaciones (ABI)

Otros cambios en el time de ejecución de 64 bits

El set de instrucciones ARM de 64 bits es significativamente diferente del set de instrucciones de 32 bits. Si su aplicación incluye cualquier código de lenguaje ensamblador, debe volver a escribirlo para usar el nuevo set de instrucciones. También necesita una descripción más detallada de las convenciones de llamadas de 64 bits en iOS, ya que las convenciones no coinciden exactamente con el estándar ARM. Para get más información, consulte la Guía de llamadas de la function ABI de iOS.

En un nivel alto, para que su código sea 64 bits limpio, debe hacer lo siguiente:

  1. Evite asignar integers largos de 64 bits a integers de 32 bits.
  2. Evite asignar pointers de 64 bits a integers de 32 bits.
  3. Evite el puntero y el truncamiento integer largo durante las operaciones aritméticas (u otros problemas aritméticos causados ​​por el cambio en los types integers).
  4. Corrija los problemas de alignment causados ​​por los cambios en los tamaños del tipo de datos.
  5. Asegúrese de que las estructuras de memory que se comparten entre los times de ejecución de 32 bits y 64 bits comparten un layout similar.
  6. Vuelva a escribir cualquier código de idioma de ensamblador para que su código utilice los nuevos códigos de time y el time de ejecución de 64 bits.
  7. Evite lanzar funciones variadas a funciones que tengan un número fijo de parameters, o viceversa.

En un nivel alto, estos son los pasos para crear una aplicación que apunta tanto a los entornos de time de ejecución de 32 bits como a los de 64 bits:

Instalar Xcode 5.0.2 (Lo he hecho solo con esto, tal vez más alto es mejor)

Abre tu proyecto. Xcode le pide que modernice su proyecto. La modernización del proyecto agrega nuevas advertencias y errores que son importantes al comstackr su aplicación para 64 bits.

Actualice la configuration de su proyecto para admitir iOS 5.1.1 o posterior. No puede crear un proyecto de 64 bits si se dirige a una versión de iOS anterior a iOS 5.1.

Cambie la configuration de compilation de Arquitecturas en su proyecto a "Arquitecturas estándar (incluyendo 64 bits)".

Actualice su aplicación para admitir el entorno de time de ejecución de 64 bits. Las nuevas advertencias y compiler errors le ayudarán a guiarlo en este process. Sin embargo, el comstackdor no hace todo el trabajo por usted; use la información de este documento para ayudarlo a guiarlo a investigar su propio código.

Pruebe su aplicación en el hardware real de 64 bits. iOS Simulator también puede ser útil durante el desarrollo, pero algunos cambios, como las convenciones de llamada a funciones, solo son visibles cuando su aplicación se ejecuta en un dispositivo.

Use instrumentos para ajustar el performance de la memory de su aplicación. Envíe una aplicación que incluya ambas architectures para su aprobación.

El rest de este capítulo describe los problemas que se presentan con frecuencia al portar una aplicación Cocoa Touch en el entorno de time de ejecución de 64 bits. Use estas secciones para guiar sus propios esfuerzos para investigar su código.

Siga la guía para apoyar la architecture de 32 y 64 bits de Apple

El progtwig xcode 5 comstackdo contenía dos códigos binarys: 32 bits y 64 bits. En el sistema de 32 bits se llamará al código de 32 bits. En el sistema de 64 bits se llamará al código de 64 bits. Al mismo time, piense que el mismo progtwig solo tiene un código de 32 bits, el sistema de 64 bits contiene dos frameworks: un de 32 bits, un de 64 bits. Cuando el sistema de 64 bits que ejecuta el progtwig de 32 bits llamará al El marco de 32 bits para el soporte subyacente, que ejecuta el progtwig de 64 bits, llamará al marco de 64 bits para el soporte subyacente. Más detalles, puede ver la documentation oficial de Apple "Guía de transición de 64 bits para Cocoa Touch".

Use xcode 5 se puede comstackr fácilmente en 64 progtwigs. El procedimiento básico es el siguiente.

  1. Establezca el dispositivo de soporte en 'ios7'

  2. Las "Arquitecturas" en "Configuración de compilation" cambiaron a "Arquitecturas estándar (incluyendo 64 bits)".

En cuanto a la primera parte de la pregunta, el SDK base debería ser "Último SDK de iOS", que es iOS 7.0. El objective mínimo de implementación debería ser iOS 6.0 o no podrá seleccionar "Architectues estándar incluyendo 64 bits (armv7, armv7s, armv8)" para architectures. Después de seleccionar estas configuraciones, su aplicación se creará para 32 bits y 64 bits.

En cuanto a la actualización, después de cambiar a arcos de 32/64 bits, analice su proyecto y corrija nuevas advertencias que puedan aparecer. Luego testing tu aplicación en un dispositivo real de 64 bits (iPhone 5s / iPad Air / iPad mini retina). Si su aplicación utiliza iCloud, testing la synchronization entre dispositivos de 32 y 64 bits. Información útil está en la guía de Apple (el resumen de allí está en la respuesta @ iDev).

EDITAR

De hecho sí, el mínimo es 5.1.1, pero debe configurarlo manualmente o establecer un destino de deployment menor que 6.0 y cuando select architectures para incl. 64 bits Xcode le pedirá que lo configure como 5.1.1. De todas forms, no estoy seguro de por qué querrías admitir 5.1.1 específicamente si quieres usar arcos de 64 bits.

cree una aplicación que apunte tanto a los entornos de time de ejecución de 32 bits como a los de 64 bits:

https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertingYourAppto64-Bit.html