2010-05-15 15 views
6

Non ho trovato un elenco completo dei passaggi necessari per utilizzare un'API privata dalla libreria di iPhone.Come utilizzare le API private di iPhone SDK

In particolare, vorrei sapere come ottenere i file di intestazione, se sono anche richiesti, come ottenerlo per compilare (quando aggiungo semplicemente l'intestazione, si lamenta che le funzioni non sono definite), e quali risorse si possono utilizzare per conoscere le API private (ad es. da esperienze di altri utenti, come ad esempio http://iphonedevwiki.net/ che ne ha poche).

Ho letto in altri posti che le persone consigliano di utilizzare class-dump per ottenere le intestazioni. Esistono metodi alternativi? Ho notato che ci sono some repositories di SDK privati ​​iPhone, quali sono le risorse più aggiornate che consiglieresti?

La maggior parte del previousquestions sulla documentazione di API private, sono tutti collegati a Erica Sadun's website, che non sembra avere più la documentazione (tutti i link sulla sinistra sono incrociate out).

Si prega di salvare i commenti di non utilizzare API private ... So dei più grandi rischi:

  • App sarà ottenere respinta da Apple.
  • L'app si romperà nei futuri aggiornamenti del sistema operativo.

Sto parlando di usi legittimi, come ad esempio:

  • usare l'applicazione privata (ad esempio per test di unità, o di fare in giro per vedere cosa è possibile)
+0

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

+0

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

risposta

5

Objective-C ha abbastanza informazioni nel binario compilato per ricostruire quasi completamente le intestazioni. Le uniche cose che mancano sono i nomi degli argomenti, che possono essere spesso approssimate dal prototipo di tipo o metodo, e alcune definizioni di struttura e enum. Ecco perché programmi come la discarica di classe sono il modo migliore per ottenere le intestazioni. Sono completi, inclusi tutti i metodi, sia che si trovino nell'header vero o meno, aggiornati e non debbano essere distribuiti. L'altro modo per ottenere le intestazioni è guardare nella versione pubblica dello stesso framework, ad esempio WebKit è privato solo su iPhone ed è altrimenti ben documentato.

Se sei interessato a cose oltre all'Obiettivo-C, devi praticamente farlo alla vecchia maniera, scorrendo attraverso il disassemblaggio per indovinare gli argomenti delle funzioni. Una volta ottenuti alcuni simboli, cercali e forse troverai un'intestazione che qualcun altro ha pubblicato. otool è un buon punto di partenza.

Se si includono le intestazioni, sia per Objective-C o C, è necessario includere anche i framework o le librerie per le intestazioni per i metodi dichiarati, proprio come qualsiasi altro header. La maggior parte degli oggetti Objective-C si trova in una cartella di PrivateFrameworks, proprio accanto alla normale cartella Frameworks. Puoi cercare nella cartella usr/lib per trovare le librerie.

Ricorda che ci sono molte differenze tra il simulatore e il dispositivo, quindi assicurati di costruire le intestazioni dal dispositivo reale. Esistono anche alcuni metodi per i quali non è possibile eseguire l'esecuzione come app sandbox.