35 votes

Vérifier vous-même l'"utilisation" de l'API privée ?

Nous savons tous qu'Apple interdit l'utilisation d'API privées ou non documentées dans les applications iOS. Je n'ai aucun problème avec cela, car il y a de bonnes raisons techniques pour lesquelles c'est une bonne idée. Cependant, il m'est arrivé deux fois de voir une application rejetée parce qu'elle utilisait des API privées, alors que ce n'était pas le cas. Ce n'est pas difficile : les API privées comprennent des symboles tels que connectionState , setThumbnail , setOrder et ainsi de suite. Tout appel à des méthodes ainsi nommées sera signalé comme une utilisation privée de l'API, même si la méthode appelée est une méthode que vous avez définie vous-même. Pour un programme qui traite des connexions, des vignettes ou de l'ordre des objets, les noms de méthodes mentionnés ci-dessus ne sont pas si improbables. Le fait d'être rejeté pour cette raison et de devoir renommer une méthode et soumettre à nouveau la demande retarde tout d'au moins une semaine pendant que vous attendez une nouvelle révision.

Alors y a-t-il un moyen, en utilisant nm de classe des frameworks iOS, etc. pour découvrir pour vous-même si les noms de vos méthodes entrent en conflit avec quelque chose là-dedans ? Si c'est le cas, nous pourrions avoir une chance de corriger cela avant la publication et éviter un rejet inutile.

18voto

Andrew Points 2000

Je vous suggère d'utiliser App Scanner. Il analyse votre fichier .app pour détecter l'utilisation de méthodes d'API privées. La version actuelle ne prend pas en charge les variables d'instance d'API privées, mais cela pourrait être intégré dans une future version.

Il attrape les méthodes dont le nom est identique à celui d'une méthode privée de l'API, même si elle possède sa propre implémentation. Il attrape également les @sélecteurs à l'intérieur des méthodes (tout comme le vérificateur automatique officiel d'iOS).

lien --> https://github.com/ChimpStudios/App-Scanner

3voto

Stephen Darlington Points 33587

Ce n'est pas exactement ce que vous recherchez, mais Xcode a deux options de validation qui valent probablement la peine d'être essayées.

Le premier est un paramètre de construction. Ce qu'il vérifie n'est pas tout à fait clair - la documentation ne le dit pas et même les conférences de la WWDC ne l'ont pas vraiment précisé - mais il est potentiellement utile. Je pense qu'il ne vérifie pas les API privées.

La deuxième option se trouve dans l'Organisateur. Dans la vue "Apps archivées", vous pouvez soumettre votre application à Apple pour validation. Encore une fois, ils ne précisent pas exactement la nature des vérifications, mais je crois comprendre qu'il s'agit plutôt des tests automatisés qu'ils effectuent avant la révision "manuelle". Je pense que cela fait vérifier les appels d'API privés.

2voto

Jasarien Points 35353

Erica Sadun travaille actuellement sur ce qu'elle appelle APIKit, un utilitaire qui analyse votre code et vous avertit de manière proactive de l'utilisation d'API privées. http://ericasadun.com/2009/12/apikit-goes-beta/#c2

Le seul problème, c'est que je ne trouve rien à voir avec ça nulle part. Apparemment, il est en version bêta, mais cela a été annoncé il y a environ 8 mois.

Je ne connais pas son statut actuel et je ne sais pas s'il est réellement disponible, mais c'est quelque chose que vous pourriez examiner. Peut-être même essayer de la contacter vous-même ? Erica traîne dans le canal #iphone-dev sur IRC sur freenode de temps en temps, vous pourriez l'y surprendre.

1voto

Archivez votre demande et validez-la. Cela passe par votre application et vous dit ce qui ne va pas. Histoire vraie, je viens de l'expérimenter moi-même sur libxslt / xml.
+ Ne perdez pas votre temps avec AppScanner (déprécié) et tous les otool -L etc. (au début, vous n'avez aucune idée de ce que le sélecteur que vous utilisez est mauvais).

1voto

Liam Points 3058

Avez-vous essayé d'allumer Valider Construire le produit dans les paramètres ? Il est censé effectuer toutes les vérifications initiales effectuées sur votre application pendant le processus de révision.

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