【原】iOS查找私有API
喜接新项目往往预示的会出一堆问题。解决问题的同时往往也就是学到更多东西的时候,这也许就是学习到新东西最直接最快速的方法吧!
小编经过努力,新项目终于过测试了,可是被苹果大大给拒了,好苦啊,最近的审核真的是没有谁了。这回被拒是因为项目中存在私有api,下图为被拒信息。


这就坑了啊,这么大一个项目,我如何定位呢?
如果是代码里面运用到私有api,那就简单了,直接
command+Shift+F,就可以定位了!prefs:root=就是原来代码里面的,小编找到后果断删除了!
最麻烦的就是在第三方SDK中的私有api(com.apple.springboard.lockcomplete),实在不知道如何定位了。在被拒消息中也提示了我们如何定位,百度+Google走一波,学习了一下,随便写个笔记。好记性不如烂笔头嘛!
方法1:strings检测
这个方法是我在被拒信息中看到的苹果大大建议的方法,步骤如下:
1、获取release的ipa包,打包是选择的方式为:App Store
2、将 .ipa 修改为 .zip,减压,获取到两个文件夹Payload、Symbols

3、打开命令行,cd 到 Payload 里面的 app,然后使用 strings 命令进行查找
strings - -a -arch armv7 "工程名" | grep com.apple.springboard.lockcomplete

还有一种命令,直接生成一个 txt 文件。
strings - -a -arch armv7 "工程名" > /Users/admin/Desktop/strings.txt
运行后会在桌面上出现一个 strings.txt 文件,文件的路径和名字随个人开发习惯

两种命令获取方式都没有定位到具体位置,只是告诉我们存在这个私有api
方法2:otool工具(xcode自带,可以直接在终端中使用)
前两步同方法1
terminal中 cd 到 Payload 里面的 app
然后使用如下命令
otool -L appName
这个命令会列出你所有使用的系统库,检查一下给出的列表中有没有私有api的库
如果对命令不熟悉还可以使用
otool -help
去查看命令帮助文档
方法3:全局搜索(建议使用)
这个方法是我认为最直接最有效的方法!
1、 cd 到你的工程目录
2、使用全局搜索命令(注意最后要加一个点)
grep -r lockcomplete .

这个方法直接定位到这个私有api出现在
AmazonFling.framework中。
到这里,解决上述第三方库的私有API的问题,就是直接替换掉新的SDK,当然如果新的第三方库也有私有API的话,那就只能舍弃了,否则基本无解。
小编比较幸运,直接更换最新的 AmazonFling.framework 后,就消除了私有api(com.apple.springboard.lockcomplete)。在发版前,使用这两个方法都进行了验证,私有api不存在了!
【原】iOS查找私有API的更多相关文章
- 怎么获取iOS的私有API
前言 作为iOS开发人员,相信大多数伙伴都对怎么获取iOS的私有API很有兴趣,最近通过查找资料,总结了以下三种方法,希望对你有用. 第一种(class-dump) 不得不说这是一个很棒的工具,安装和 ...
- iOS private-api-checker私有API检测
转自: http://www.jianshu.com/p/07779e293ca7 注: '根目录' 指的是 private-api-checker 包的目录 iOS-private-api-che ...
- (iOS)私有API的使用(原创)
最近在做企业级程序,需要搞设备的udid等信息,但是ios7把udid私有化了,不公开使用.所以研究了一下ios的私有api. 调查了一下文章,发现这方面的文章不多,国内更是不全,高手们都懒得写基础教 ...
- IOS私有API的使用(转)
最近在做企业级程序,需要搞设备的udid等信息,但是ios7把udid私有化了,不公开使用.所以研究了一下ios的私有api. 调查了一下文章,发现这方面的文章不多,国内更是不全,高手们都懒得写基 ...
- ios中通过调试来使用私有api
转自:http://blog.csdn.net/cubepeng/article/details/11284173 OS不允许使用ios私有api,使用私有api可以获得意想不到的效果 ,同时使用私有 ...
- class-dump获取iOS私有api
转自:http://blog.csdn.net/sunyuanyang625/article/details/41440167 获取各类iOS私有api 安装工具class-dump 资源地址http ...
- iOS 私有API调用
最近自己在做一个小程序,想实现一个一键设置手机壁纸的功能.但在iOS公开的API里找不到相关的方法,只能从私有API入手. 网上有不少教程,不过都不是很详细.从google和https://stack ...
- iOS - APP审核Guideline 2.5.1被拒,使用了私有API
最近iOS 审核被拒,说是使用了私有API:com.apple.springboard.lockcomplete 具体内容如下: 发件人 Apple . Performance: Software R ...
- iOS buttonWithType:101 苹果私有api
无意中发现,有人创建UIButton这样写 UIButton *previousButton = [UIButtonbuttonWithType:101]; 一看原来是私有api UIButton * ...
随机推荐
- bzoj1584 9.20考试 cleaning up 打扫卫生
1584: [Usaco2009 Mar]Cleaning Up 打扫卫生 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 549 Solved: 38 ...
- Q&A-Ray-20180710
Q: 如果集群多个客户端订阅会不会重复接收消息? A: 集群环境用,有另外一个参数. NodeManager类没有在框架里面: public interface INodeManager : IGra ...
- java算法题每日一练01,java入门简单算法题小练
1.给数组做反序 public class Ak01 { public static void main(String[] args) { int[] a = new int[]{22,48,41,2 ...
- 【DFS的分支限界】(例题-算式等式)
不知道DFS的请滚去 这里瞅一眼再说. -分支限界- 基本概念: 类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法.但在一般情况下,分支限界法与回溯法的求解目标不同.回溯法的求解目标是找出T ...
- 算法导论--最小生成树(Kruskal和Prim算法)
转载出处:勿在浮沙筑高台http://blog.csdn.net/luoshixian099/article/details/51908175 关于图的几个概念定义: 连通图:在无向图中,若任意两个顶 ...
- js深入之call、apply和bind
一. call和apply 1. 代码完整实现 Function.prototype.mycall = function (context, ...argus) { if (typeof this ! ...
- 个人永久性免费-Excel催化剂功能第37波-把Sqlserver的强大分析函数拿到Excel中用
本人一直钟情于使用Sqlserver数据库的一大原因是其提供了非常好用.高效的数据分析函数(窗口函数),可以在做数据清洗和数据分析场合等多个场景使用.只需简单的一个函数即可做出常规SQL语句很难以实现 ...
- Java中注释的使用
Java 中注释有三种类型:单行注释.多行注释.文档注释 我们可以通过 javadoc 命令从文档注释(/**aa*/)中提取内容,生成程序的 API 帮助文档. 打开首页,查看下生成的 API 文档 ...
- K2 smarforms 控件整理
K2 Community – Market – Smatform Controls l K2 blackpearl 1. Drag and Drop Upload Control http: ...
- 【杂谈】Hash表与平衡树
hash表与平衡树查询数据的时间复杂度是多少? hash表为O(1),平衡树为O(logn) 这个时间复杂度是如何得出的? 时间复杂度是按照最糟糕的情况来的.但即使是最糟糕的情况,hash表也只需要计 ...