本文由2篇文章综合而成,原文地址为:
http://www./iphonedev/sdk/2011/0531/2906.html
http://bbs.51cto.com/archiver/tid-846159.html
一、关于苹果API: 1、Published API(公开的API):又称 Documented API(文档中记录的API)。是苹果通过 Cocoa Touch 向全世界第三方开发者公开的所有 API 。 2、UnPublished API(未公开API):又称 Undocumented API(文档中未记录的API),是指虽然放在Frameworks框架中,但是却没有在苹果的官方文档中有使用说明、代码介绍等记录的API。按苹果的说法,未公开的API是还不够成熟,可能还会变动的API,等完全成型了后会变成公开的API,但是目前不对其提供承诺,就是系统版本升级后可能会失效。 3、Private API(私有API):指的是SDK下的 PrivateFrameWorks框架下的API,真实存在于 Cocoa Touch 中。私有API是苹果明确规定不能使用的API,一旦你的作品中有私有API,在上传AppStore的时候会100%被拒绝的。如果当作小范围软件的话就可以尝试一下,比如再Cydia上发布,91上发布,条件不会很苛刻的。
二、查找应用中的 Private API 虽然我们能够保证自己的APP中只使用 Cocoa Touch 公布的 API ,没有使用私有API。但是我们如何确保这些第三方的代 码报里,不存在 private API ?
苹果提供了几种机器识别方法,比如 string 命令,比如 otool -ov 命令,但都不太好用。江湖上有人做了一套解决方案,名叫 AppScanner ,我老人家决定强烈推荐一下。
这是一个实例的截屏,头两项 API 可疑度 100% ,说明它们就是来搞破坏的 Private API。
最后插一则八卦, Facebook / Three20 如雷贯耳,想必很多开发者都使用过。然而要命的事,在 Three20 的第一个版本中,就悄悄的藏着一条因为重名导致的假阳性 Private API 。虽然是假阳性,但那次事故仍然导致了所有使用那个版本
Three20 的 app 被惨拒。当然了,后来他们很快就修正了这个问题。
三、使用私有API:
1.导出生成私有API的头文件声明
gitHub有老外整理:https://github.com/nst/iOS-Runtime-Headers |
|