Maintenant qu'Apple exécute une sorte d'analyse statique pour vérifier automatiquement l'utilisation de l'API privée, un certain nombre de personnes ont été interceptées à cause de la bibliothèque Three20. J'utilise une autre bibliothèque tierce (que je compile moi-même à partir du code) et je voudrais l'auditer automatiquement pour une utilisation privée de l'API avant de la soumettre à Apple, afin que je puisse éliminer/réécrire ces parties.Comment détecter et éviter l'utilisation d'API privées dans des bibliothèques tierces
Si j'exécute nm
sur mon exécutable d'application, j'obtiens une liste de symboles, et je vois des symboles que je n'utilise pas. Par exemple je vois _AudioServicesPlaySystemSound, et si je recherche "AudioServicesPlaySystemSound" dans XCode je n'obtiens aucun résultat. Est-il possible de discriminer automatiquement les appels aux API privées, par exemple, je remarque que Apple a l'habitude de les nommer avec un trait de soulignement initial.
Cependant: si j'inclue délibérément un appel à une API privée, il n'apparaît pas dans la sortie de nm
, mais il apparaît si j'exécute strings
sur le binaire. Sur cette base, une idée que j'avais était de compiler une énorme liste de tous les appels d'API privés dans une table énorme, et de les rechercher automatiquement dans la sortie des chaînes. Je n'ai pas encore fait ça.
Est-ce que quelqu'un a des conseils sur la façon d'attraper automatiquement ce genre de choses, alors je ne fais que suivre le processus de révision une fois?
Ils s'opposent à Three20? C'est en fait écrit par le développeur qui a créé l'application Facebook pour iPhone. Si votre application est rejetée à cause de Three20, l'application Facebook devrait être trop ... Heh. Justin ;-) –
Oui ... http://groups.google.com/group/three20/browse_thread/thread/c442af6e39a918b0/6d5046771539d139 –
J'imagine que la prochaine fois que Facebook soumettra une mise à jour, elle sera rejetée si ils n'utilisent pas la dernière version conforme aux règles d'Apple. – bpapa