2010-05-15 7 views
6

Je n'ai pas trouvé de liste complète des étapes requises pour utiliser une API privée depuis la bibliothèque iPhone.Comment utiliser les API privées du SDK iPhone

En particulier, je voudrais savoir comment obtenir des fichiers d'en-tête, s'ils sont requis, comment les compiler (quand j'ajoute simplement l'en-tête, il se plaint que les fonctions ne sont pas définies), et Quelles sont les ressources que l'on peut utiliser pour en savoir plus sur les API privées (par exemple, à partir des expériences d'autres utilisateurs, telles que http://iphonedevwiki.net/ qui en possède quelques-unes).

J'ai lu dans d'autres endroits que les gens recommandent d'utiliser class-dump pour obtenir les en-têtes. Existe-t-il des méthodes alternatives? J'ai remarqué qu'il y a some repositories des SDK privés d'iPhone, quelles sont les ressources les plus à jour que vous recommanderiez?

La plupart des previousquestions sur la documentation des API privées, ont tous liés à Erica Sadun's website, qui ne semble pas avoir la documentation plus (tous les liens à gauche sont barrés).

S'il vous plaît enregistrer les commentaires de ne pas utiliser API privée ... Je connais les plus grands risques:

  • App obtenir rejeté par Apple.
  • L'application va casser dans les futures mises à jour du système d'exploitation.

Je parle des utilisations légitimes, telles que:

  • utilisation de l'application privée (par exemple pour les tests unitaires ou de déconner pour voir ce qui est possible)
+0

Dupliquer: http://stackoverflow.com/questions/1150360/iphone-private-api-documentation – rjstelling

+0

Proposition StackExchange: http://area51.stackexchange.com/proposals/18154/jailbreak-iphone-development?referrer= EuWVi6IpN0_KzzEhC7I-Qw2 – rjstelling

Répondre

5

a Objective-C assez d'informations dans le fichier binaire compilé pour reconstruire presque entièrement les en-têtes. Les seuls éléments manquants sont les noms d'arguments, qui peuvent souvent être approximés à partir du prototype de type ou de méthode, et certaines définitions de structure et d'énumération. C'est pourquoi des programmes comme class-dump sont le meilleur moyen d'obtenir les en-têtes. Ils sont complets, y compris toutes les méthodes, qu'elles soient dans l'en-tête réel ou non, à jour et n'ont pas besoin d'être distribuées. L'autre façon d'obtenir des en-têtes est de regarder dans la version publique du même framework, par exemple WebKit est uniquement privé sur l'iPhone et est par ailleurs bien documenté.

Si vous êtes intéressé par des choses autres qu'Objective-C, vous devez pratiquement le faire à l'ancienne, en passant par le désassemblage pour deviner les arguments de la fonction. Une fois que vous obtenez quelques symboles, recherchez-les et peut-être que vous trouverez un en-tête que quelqu'un d'autre a posté. otool est un bon endroit pour commencer.

Si vous incluez les en-têtes, que ce soit pour Objective-C ou C, vous devez également inclure les frameworks ou bibliothèques pour lesquels les en-têtes déclarent des méthodes, comme tous les autres en-têtes. La plupart des éléments Objective-C se trouvent dans un dossier PrivateFrameworks situé juste à côté du dossier Frameworks standard. Vous pouvez chercher dans le dossier usr/lib pour trouver des bibliothèques. Sachez qu'il existe de nombreuses différences entre le simulateur et le périphérique. Veillez donc à créer des en-têtes à partir du périphérique réel. Il existe également certaines méthodes que vous ne pourrez pas exécuter en tant qu'application en bac à sable.