ios – iPhone私有API编译
我几个小时后在整个互联网上搜索,我找不到我正在寻找的信息.
我想搞乱私人api,看看什么可能,等等,但我甚至无法编译. 所以我有几个非常基本的问题: >我必须转储标头吗?因为我下载了一个加载API的示例 char *framework = "/System/Library/PrivateFrameworks/..."; dlopen(...); 如果有任何机会,我想使用objc语法(如果可能)而不是使用C(如上所述). >如果导入私有API,如何编译Xcode?我是否必须添加其他链接标志? (因为我读到了两个不同的意见) 最后,我读到了有关权利(在iOS 7中似乎是新的).我如何使用这些权利以及何时使用它们? 有人可以请输入几行作为例子吗? 解决方法
背景
为了在任何框架中使用方法,您可以选择静态或动态地引用这些框架.我没有在你的问题中看到任何暗示你需要使用动态链接的东西,所以我会避免这种情况(初学者会稍微复杂一些). (安培; ddagger) 要静态引用框架中的API,您需要导入相关的头文件,然后配置Xcode项目以链接到框架.这两个步骤仅对私有API略有改变. 私有API通常不会为您提供描述API的标头(* .h).我说“通常”,因为有时候,iOS上私有的API在Mac OS X上实际上是公开的,因此要使用它,只需将标题的OS X版本复制到项目中即可. 生成标题 但是,可能更常见的是你必须自己生成标题.如果您知道需要哪个标题,通常可以找到它发布的online under someone’s github account.如果没有,您需要一个像class-dump或class-dump-z这样的工具.在私有框架上运行类转储工具,在Mac上找到它: cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks/ class-dump -H -o ~/Headers/7.0/MusicLibrary/ MusicLibrary 然后,进入?/ Headers / 7.0 / MusicLibrary /并找到许多转储的头文件.将您需要的标题(仅)复制到Xcode iOS项目目录中.然后,从Xcode内部右键单击Project Navigator视图中的源文件夹,选择“将文件添加到< Project Name> …”.选择您需要包含在项目中的转储头文件. 链接 为了成功链接API,您还需要将框架添加到Xcode构建阶段.从项目目标设置中,选择Build Phases,然后选择Link Binary with Libraries.您通常从iOS SDK为您提供的默认列表中选择一个公共框架.但是,您也可以选择浏览Mac以获取第三方框架或私有框架.对于私有框架,您只需要导航到这样的文件夹位置 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks/ 然后选择* .framework目录. 然后,只需像使用任何公共/私有API一样使用API??. #import头文件,调用API,实例化类等. 使用此代码: char *framework = "/System/Library/PrivateFrameworks/..."; dlopen(...); 是动态打开私有框架的尝试.如果您在编译时知道要使用哪个框架,并且让它出现在Mac上以让Xcode链接,那就没有必要了. 权益 权利对于iOS 7来说并不陌生.它们已经存在了相当长的一段时间,并且是iOS用于防止未经授权使用某些私有API的一种技术. iOS将检查您的应用程序是否已被授予特定权利(按名称),如果它没有该权利,则调用受保护的API将失败(通常是静默的,尽管有时您会在控制台日志中看到一条消息). See here for an example of granting your (jailbreak) app an entitlement. (& ddagger;)更新:iOS 9.3带来了一些私有API和静态与动态链接的变化.请see this Stack Overflow question here for more. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |