如何使用iPhone SDK私有API

7
我还没有找到一份全面列出使用iPhone Library私有API所需步骤的清单。
特别是,我想知道如何获取头文件(如果需要的话),如何编译它(当我仅添加标题时,它会抱怨函数未定义),以及可以用哪些资源来了解私有API(例如从其他用户的经验中学习,比如http://iphonedevwiki.net/,其中有一些)。
我已经在其他地方读到有人建议使用class-dump来获取头文件。还有其他替代方法吗?我注意到有一些存储库提供iPhone Private SDK,您推荐最新的资源是什么?

大多数关于私有API文档的先前 问题, 都链接到Erica Sadun的网站, 但该网站似乎不再提供文档(左侧所有链接都被划掉了)。

请不要评论不使用私有API的建议...我知道最大的风险:

  • 应用将被苹果拒绝。
  • 应用将在未来的操作系统更新中出现故障。

我谈论的是合法用途,例如:

  • 私有应用程序使用(例如用于单元测试或研究可行性)

重复内容:https://dev59.com/EnM_5IYBdhLWcg3w9oWG - Richard Stelling
StackExchange提案:http://area51.stackexchange.com/proposals/18154/jailbreak-iphone-development?referrer=EuWVi6IpN0_KzzEhC7I-Qw2 - Richard Stelling
1个回答

5

Objective-C编译后的二进制文件中包含了足够的信息,几乎可以完全重构出头文件。唯一缺失的是参数名称,但通常可以从类型或方法原型进行近似推测,并且一些结构和枚举定义也会缺失。这就是为什么像class-dump这样的程序是获取头文件的最佳方式。它们非常全面,包括每个方法,无论它是否在真正的头文件中,而且始终保持最新,并且不需要分发。另一种获取头文件的方式是查看相同框架的公共版本,例如WebKit在iPhone上是私有的,但在其他地方有很好的文档。

如果你对Objective-C以外的东西感兴趣,你基本上必须使用老式方法,通过反汇编来猜测函数参数。一旦你获得了一些符号,搜索它们,也许你会找到别人发布的头文件。otool是一个很好的起点。

如果你包含了头文件,无论是Objective-C还是C,你必须像任何其他头文件一样包含声明方法的框架或库。大多数Objective-C的内容都在与常规Frameworks文件夹相邻的PrivateFrameworks文件夹中。你可以在usr/lib文件夹中查找库。

请注意模拟器和设备之间有很多差异,因此请确保从真正的设备构建头文件。还有一些方法你将无权作为沙盒应用程序运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接