如何使用iPhone SDK私有API

Sen*_*ful 7 iphone resources iphone-privateapi

我还没有找到使用iPhone库中私有API所需步骤的完整列表.

特别是,我想知道如何获取头文件,如果它们甚至是必需的,如何让它编译(当我只是添加头,它抱怨函数没有定义),以及什么资源可以用于了解私有API(例如来自其他用户的体验,例如http://iphonedevwiki.net/,其中有一些).

我在其他地方读过,人们建议使用class-dump来获取标题.有没有替代方法?我注意到有一些 iPhone私有SDK的存储库,你会推荐哪些最新的资源?

以前 关于私有API文档的大多数问题都与Erica Sadun的网站有关,该网站似乎没有文档(左边的所有链接都被删掉).

请保存关于不使用私有API的评论......我知道最大的风险:

  • 应用程序将被Apple拒绝.
  • 应用程序将在未来的操作系统更新中中断.

我说的是合法用途,例如:

  • 私人应用程序的使用(例如,用于单元测试,或者搞乱看看有什么可能)

dra*_*ard 5

Objective-C在编译的二进制文件中有足够的信息来几乎完全重建头文件.唯一缺少的是参数名称,通常可以从类型或方法原型以及一些结构和枚举定义中进行近似.这就是为什么像类转储这样的程序是获取标题的最佳方式.它们是全面的,包括每个方法,无论它是否在真正的标题中,是最新的,不需要分发.获取标题的另一种方法是查看相同框架的公共版本,例如,WebKit仅在iPhone上是私有的,并且在其他方​​面有详细记录.

如果你对Objective-C以外的东西感兴趣,你几乎必须采用老式的方式,通过反汇编来猜测函数参数.一旦你得到一些符号,搜索它们,也许你会找到其他人发布的标题.otool是一个很好的起点.

如果包含头文件,无论是Objective-C还是C,您还必须包含头部声明方法的框架或库,就像任何其他头文件一样.大多数Objective-C内容都位于常规Frameworks文件夹旁边的PrivateFrameworks文件夹中.您可以在usr/lib文件夹中查找库.

请注意,模拟器和设备之间存在很多差异,因此请确保从实际设备构建标头.还有一些方法您无权作为沙盒应用程序运行.