4 votes

Mac App Store : Les utilisateurs actuels de la version 32 bits verront-ils un message de mise à jour ?

J'envisage d'abandonner le support 32 bits au profit du comptage automatique des références (qui n'est supporté que pour les binaires 64 bits).

J'aimerais éviter ces deux scénarios avec le Mac App Store :

Pour un utilisateur d'un vieux Mac 32 bits :

  1. qui ont acheté la version précédente avec le support 32-bit : Verront-ils un message de mise à jour de l'application dans le Mac App Store ? Si c'est le cas, la mise à jour (désormais réservée au 64 bits) ne fonctionnera pas pour lui/elle.

  2. qui n'a pas acheté l'application auparavant : pourront-ils acheter l'application bien qu'elle ne fonctionne pas sur leur système ?

ARC 64 bits uniquement : http://developer.apple.com/library/mac/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html#//apple_ref/doc/uid/TP40011226

EDIT : J'ai trouvé une occasion où quelqu'un a pu télécharger une Application 64 bits uniquement sur un MacBook 32 bits et un message d'erreur s'affiche. "Votre achat n'a pas pu être effectué" . Dans ce cas, il s'agissait d'une application gratuite. Je me demande quand ce message apparaîtrait pour une application payante (avant ou après le paiement).

http://www.linethirteen.com/blog/2011/01/mac-app-store-32-bit-vs-64-bit/

2voto

Jakob Egger Points 4282

J'ai également découvert que l'ARC nécessite des processeurs 64 bits. Cependant, j'ai réussi à construire un gros binaire où la version 64 bits utilise ARC et la version 32 bits utilise le garbage collector. Pour ce faire, j'ai dû faire ce qui suit :

  • mettre en place une cible 32bit seulement qui utilise GC
  • mettre en place une cible uniquement 64 bits qui utilise l'ARC
  • ajouter la cible 32bit comme dépendance de la cible 64bit
  • ajouter une phase de construction personnalisée avec un script de shell qui utilise lipo pour assembler un gros binaire à partir des binaires des deux cibles

Les deux cibles utilisent la même source, mais quelques #ifdef __OBJC_GC__ Les déclarations étaient nécessaires. J'ai dû renoncer aux ivars synthétisés pour des raisons de rétrocompatibilité :(

1voto

Peter Hosey Points 66275

Je ne sais pas ce que l'App Store fera (et c'est probablement sujet à changement, de toute façon), mais si l'application est livrée aux clients 32 bits, vous pouvez contourner le problème de cette façon :

  1. Faites en sorte que votre application ne soit que 64 bits.
  2. Créez une deuxième application qui ne fonctionne qu'en 32 bits et ne fait rien d'autre que d'afficher un message d'alerte.
  3. Intégrer toutes les ressources de la deuxième application dans la première (c'est-à-dire les ajouter aux deux cibles).
  4. Faites de la deuxième cible une dépendance de la première, et utilisez lipo dans une phase de shell script dans la première cible pour assimiler le binaire 32 bits dans le binaire 64 bits.

Vous aurez alors un Universal Binary (ou "fat binary") qui sera votre véritable application sur les machines 64 bits, et l'application "veuillez mettre à jour votre Mac" sur les machines 32 bits.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X