9
votes

Non-Pie Binary - Le nom du projet exécutable n'est pas une position exécutable indépendante.

J'ai téléchargé un binaire sur iTunes Connect, il a été validé et accepté de publier à l'App Store. J'ai reçu un email d'Apple, affirmant que ma demande est un binaire non valide:

cher développeur,

Nous avons découvert un ou plusieurs problèmes avec votre récente livraison pour "Nom du projet". Pour traiter votre livraison, les problèmes suivants doivent être corrigé:

Optimisation de l'iPhone 5 Exigence d'optimisation - Votre binaire n'est pas optimisé pour iPhone 5. À partir du 1er mai, toutes les nouvelles applications iPhone et applications Soumis doit prendre en charge l'affichage de 4 pouces sur iPhone 5. Toutes les applications doivent Inclure une image de lancement de la taille appropriée. En savoir plus sur Support iPhone 5 en examinant les directives d'interface humaine IOS.

Bien que vous n'ayez pas obligé de réparer les problèmes suivants, nous voulions vous faire au courant:

binaire non-tache - L'exécutable "xyz.app" n'est pas une position exécutable indépendante. Veuillez vous assurer que vos paramètres de construction sont configuré pour créer des exécutables à tarte. Une fois les corrections requises ont été faits, allez à la page de détail de la version et cliquez sur "Prêt à Télécharger binaire. "Continuez par le processus de soumission jusqu'à l'application Le statut est "en attente de téléchargement". Vous pouvez ensuite livrer la correction binaire.

J'ai changé le Ne crée pas la position Executables indépendants OPTION IN CIBLE > Build Réglages TO Oui , mais je reçois toujours le même message ci-dessus.


0 commentaires

3 Réponses :


5
votes

Nous obtenons le même message sur toutes nos mises à jour de l'application cette semaine. Vous devrez définir "Ne pas créer de position exécutables indépendants" sur "Non" et "Générer du code dépendant de la position" à "Non", qui est la valeur par défaut.

La clé est que vous devrez définir "la cible de déploiement iOS" sur 4.3 ou la version ultérieure, ou les paramètres de tarte seront ignorés.

Vous pouvez tester l'application binaire avec cette commande et montrerra "tarte" à la fin de la ligne pour un EXE de tartre. Otool -Vh MyAppExe


2 commentaires

Merci pour la réponse. avez-vous publier votre application iPhone avec succès sur iTune ou non. S'il vous plaît expliquer la dernière ligne de votre réponse. Pouvez-vous me dire si je définissais "la cible de déploiement iOS" à 4.3 ou plus tard, il ne sera applicable à la version inférieure d'IOS.


Si vous modifiez la "cible de déploiement iOS" sur 4.3, votre application ne sera plus compatible avec les versions iOS plus anciennes et celle-ci sera affichée dans iTunes. Nous n'avons pas fait changer de tarte car nous voulons toujours soutenir les anciennes versions iOS, mais rappelez-vous que les commentaires de Apple ne sont qu'un rappel et vous n'avez pas à faire ce changement ... pourtant.



8
votes

Il existe maintenant un document d'Apple expliquant le problème et comment le résoudre: QA1788: Construire une position indépendante Exécutable ,

Étapes pour construire votre application en tant que tarte
  1. en Xcode, sélectionnez votre cible dans la section "Cugets", puis cliquez sur l'onglet "Build Settings" pour afficher ses paramètres.

  2. pour les applications ios, définissez la cible de déploiement iOS à iOS 4.3 ou ultérieure . Pour les applications Mac, définissez la cible de déploiement OS X sur OS X 10.7 ou version ultérieure .

  3. Vérifiez que générer du code dépendant de la position est défini sur sur NO .

  4. Vérifiez que Ne crée pas la position des exécutables indépendants est défini sur NO .


6 commentaires

Merci pour cette aide. J'ai lu ci-dessus lien et postuler dans mon xcode et je teste ma construction dans mon otool -hv dans le dossier "/build/products/debug-iphonesImulator/dkpad.app/dkpad". Mais comme selon le drapeau de l'en-tête de lien ne montrent pas "tarte". Drapeau de l'en-tête est montré comme "Noundfs DyLDLink Twolevel MH_NO_HEAP_EXECUT". My Mac OSX Version 10.6.8 (Snow Leopad), Xcode version 4.0 et iOS version 4.3. S'il vous plaît donner une cause passable pour cela. Merci.


Si Otool montrent que votre application n'est pas une tarte, il est possible qu'une cible particulière remplace un paramètre de construction. Triple Vérifiez vos paramètres de construction. Tenez également l'option enfoncée et choisissez "Clean Build Dossier" dans le menu "Produit", éventuellement Xcode n'a pas reconstruit l'application.


@VincentageBable Comment réalisez-vous l'exécutable à la Pie lorsque ces paramètres sont explicitement définis sur Non? Ils semblent la forcer maintenant, les paramètres de construction sont définis pourtant, je reçois l'erreur.


@Antwanvanhoudt êtes-vous capable de résoudre ce problème? Je viens de recevoir cet avertissement maintenant


@ JaysonTamayo Apple semble avoir supprimé les constrictions sur ITC, mais je ne serais pas surpris que nous devrions mettre à jour Xcode pour résoudre ce problème à l'avenir.


Pourquoi l'option est-elle appelée Ne crée pas de position Executables indépendants ? Les doubles négatifs sont déroutants.



0
votes

Comme mentionné ici par Vincent, avoir une tarte-binaire:

  • Suivez Apple Q & A qa1788
  • Définir la cible de déploiement sur 4.3 en tant que version minimale du système d'exploitation (ceci est une exigence pour Pie-binaire)
  • (le bit manquant) : Assurez-vous de ne pas avoir une bibliothèque tiers qui ne serait pas compatible avec Pie-binaire, sinon tout le projet ne construira pas pour Pie-binaire. < / li>
  • Vérifiez: otool -hv /path/to/myapp.app/myApp

    Ceci dit, Apple ne vous oblige pas "encore" à avoir une application pie-binaire. La question est donc «va-t-elle forcer à le faire? Et quand?»

    _oho

    Plus d'info: http://blog.hoachuck.biz/blog/2013/06/28/non-pie-binar-app-on-ios-could-lead-a-security-issue/


1 commentaires

Et comment vérifieriez-vous si une bibliothèque tierce est compatible avec la PIE?