web-dev-qa-db-fra.com

L'analyse API résultante est trop volumineuse lorsque vous téléchargez une application sur le Mac Store.

Je vais télécharger ma première application Mac sur Apple Store

Et corrigé tous les bugs de validation de l'icône, de la catégorie ...

Mais après cela, j'ai passé la validation avec avertissement:

The resulting API analysis file is too large. We were unable to validate your API usage prior to delivery. This is just an informational message.

Et mon téléchargement sera rejeté avec la raison: "Binaire invalide"
Y a-t-il quelqu'un qui a l'expérience de ce cas?


UPDATE: cet avertissement n’est pas la raison du refus, c’est peut-être le problème de l’archivage de l’application. J'ai publié avec succès mon application pour stocker.

Nous pouvons donc ignorer cela en toute sécurité.

107
arasa

Apple interdit l'utilisation d'API privées ou non documentées dans les applications iOS. Tous les appels que vous effectuez avec des méthodes portant le même nom que des méthodes d'API privées ou non documentées seront marqués comme une utilisation d'API privée, même si la méthode appelée est quelque chose que vous avez définie vous-même.

App Loader effectue une analyse initiale en vérifiant les noms de méthodes, l'accès aux variables d'instance et même l'utilisation de @selector avec des noms de méthodes privés. App Loader ne fait pas toujours du bon travail, et plus vous avez de fichiers source, plus vous aurez de chances de vous avertir que le fichier d'analyse d'API qu'il a généré est "trop ​​volumineux".

Heureusement, vous pouvez toujours soumettre votre candidature, malgré l'avertissement. Apple le vérifiera en interne, et si quelque chose est renvoyé en raison de noms qui se chevauchent, vous devrez recommencer le processus de révision.

Erika Sadun a essayé de créer une application appelée API Kit qui effectuerait le balayage pour vous, mais elle semble avoir abandonné son travail et supprimé toute trace de l'application sur son site Web.

Chimp Studios a créé App Scanner pour faire la même chose, mais il n'a pas été mis à jour depuis 2011. Malheureusement, pour les grands projets - et cela inclut les projets avec beaucoup de modules supplémentaires de CocoaPods - il n’est pas un bon moyen actuel (2014) de résoudre ce problème autre que de nommer de manière proactive des éléments tels qu’ils ne soient pas en conflit avec les noms de méthode et d’instance d’API privée.

Vous pouvez en apprendre plus sur les conventions de dénomination du cacao d'Apple et essayer d'anticiper. Cela réduira les futurs maux de tête. Jusqu’à Apple introduit quelque chose comme les espaces de noms, cependant, nous pouvons continuer à rencontrer ce problème de temps à autre.

L'erreur "binaire non valide" peut provenir de plusieurs causes, mais elle n'a aucun lien avec le document d'analyse d'API créé par App Loader.

Vous devriez savoir que même avec l'analyse, il existe toujours des moyens de contourner l'interdiction d'utiliser des API privées/non documentées. :)

65
lswank

Après avoir rencontré ce problème pour la première fois sur mon premier projet Swift, il semble que la réponse la plus courante à cette question soit la suivante:

Si vous utilisez Swift 2.x et XCode 7, vous obtiendrez cette erreur. Ignorez-la.

[UPDATE: le déploiement de XCode 7.3 & iOS 9.3 semble avoir résolu ce problème!]

10
Richard

Voici un moyen facile de les contourner ... stockez le nom du sélecteur à l'envers, comme "dlroWolleH", puis inversez la chaîne avant d'appeler la méthode.

Si Apple devient sage, vous pouvez les chiffrer.

1
Mike Crawford