2010-05-15 13 views
6

Ich habe keine umfassende Liste der Schritte gefunden, die erforderlich sind, um eine private API aus der iPhone-Bibliothek zu verwenden.So verwenden Sie iPhone SDK Private APIs

Insbesondere würde ich gerne wissen, wie Header-Dateien zu bekommen, wenn sie sogar benötigt werden, wie man es kompilieren (wenn ich einfach die Überschrift hinzufügen, beschwert sich, dass die Funktionen nicht definiert sind), und Welche Ressourcen kann man verwenden, um über private APIs zu erfahren (z. B. aus Erfahrungen anderer Benutzer, wie http://iphonedevwiki.net/, die ein paar hat).

Ich habe in anderen Orten gelesen, dass Leute empfehlen, class-dump zu verwenden, um die Header zu erhalten. Gibt es alternative Methoden? Ich habe festgestellt, dass es some repositories von iPhone Private SDKs gibt, was sind die aktuellsten Ressourcen, die Sie empfehlen würden?

Die meisten der previousquestions über Dokumentation der privaten APIs, haben alle zu Erica Sadun's website verbunden, die Dokumentation zu haben, mehr scheint nicht (die Links, um alle auf der linken Seite sind durchgestrichen).

Sie auch die Kommentare über keine privaten APIs verwenden ... Ich weiß, der größten Risiken:

  • App wird von Apple abgelehnt bekommen.
  • App wird in zukünftigen Updates des Betriebssystems brechen.

Ich spreche über legitime Nutzungen, wie zum Beispiel:

  • Privat Anwendung Gebrauch (zB für Unit-Tests oder Herumspielen zu sehen, was möglich ist)
+0

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

+0

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

Antwort

5

Objective-C hat genug Informationen in der kompilierten Binärdatei, um die Header fast vollständig zu rekonstruieren. Die einzigen fehlenden Elemente sind Argumentnamen, die oft aus dem Typ- oder Methoden-Prototyp approximiert werden können, sowie einige Struktur- und Aufzählungsdefinitionen. Deshalb sind Programme wie Class-Dump der beste Weg, um die Header zu bekommen. Sie sind umfassend, einschließlich jeder Methode, ob es in der realen Kopfzeile war oder nicht, aktuell und muss nicht verteilt werden. Die andere Möglichkeit, Header zu erhalten, besteht darin, in die öffentliche Version des gleichen Frameworks zu schauen, zum Beispiel ist WebKit nur privat auf dem iPhone und ansonsten gut dokumentiert.

Wenn Sie an Dingen neben Objective-C interessiert sind, müssen Sie es ziemlich altmodisch machen, durch Disassemblierung, um Funktionsargumente zu erraten. Sobald Sie ein paar Symbole erhalten haben, suchen Sie nach ihnen und vielleicht finden Sie eine Überschrift, die jemand anderes gepostet hat. Otool ist ein guter Anfang.

Wenn Sie die Header, sei es für Objective-C oder C, einschließen, müssen Sie auch die Frameworks oder Bibliotheken, für die die Header deklarieren, Methoden hinzufügen, genau wie alle anderen Header. Der Großteil der Objective-C-Dateien befindet sich in einem PrivateFrameworks-Ordner direkt neben dem regulären Frameworks-Ordner. Sie können im Ordner usr/lib nach Bibliotheken suchen.

Beachten Sie, dass es zwischen dem Simulator und dem Gerät viele Unterschiede gibt. Stellen Sie also sicher, dass Sie Header vom realen Gerät erstellen. Es gibt auch einige Methoden, für die Sie keine Berechtigung haben, als Sandbox-App ausgeführt zu werden.