【原】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 * ...
随机推荐
- 数组指针&&指针数组
数组指针: 定义 int (*p)[n]; 占用内存中一个指针的存储空间 ()优先级高,首先说明p是一个指针,指向一个int型的一维数组,故名数组(的)指针.指向的一维数组的长度是n,也可以 ...
- Lucene01--倒排索引思想
Lucene01--倒排索引思想 1. 倒排索引的概念: 首先对数据按列拆分存储,然后对文档中的数据分词,对词条进行索引,并记录词条在文档中出现的位置.这样查找时只要找到了词条,就找到了对应的文档.概 ...
- 从微信小程序开发者工具源码看实现原理(二)- - 小程序技术实现
wxml与wxss的转换 1.wxml使用wcc转换 2.wxss使用wcsc转换 开发者工具主入口 视图层页面的实现 视图层页面实现技术细节 视图层快速打开原理 视图层新打开页面流程 业务逻辑层页面 ...
- Android使用webService(发送xml数据的方式,不使用jar包)
Android使用webService可以用ksoap2.jar包来使用.但是我觉得代码不好理解,而且记不住. 所以我查询了好多资料,以及自己的理解.可以用代码发送http请求(发送xml数据)来访问 ...
- springboot - 登录+静态资源访问+国际化
1.项目目录结构 2.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmln ...
- Go语言圣经习题练习_1.6并发获取多个URL
练习 1.10: 找一个数据量比较大的网站,用本小节中的程序调研网站的缓存策略,对每个URL执行两遍请求,查看两次时间是否有较大的差别,并且每次获取到的响应内容是否一致,修改本节中的程序,将响应结果输 ...
- CSS和html如何结合起来——选择符及优先级
1.选择符 兼容性 统配选择符 * 元素选择符 body 类选择符 .class id选择符 #id 包含原则符 p strong (所有 ...
- On The Way—Step 1 :python入门之Python的历程
1.python的历史 2004 Django框架 python2 和 python3的区别 python2 源码不统一 有重复功能代码 python3 源码统一 没有重复功能代码 Python的发展 ...
- 02 | 健康之路 kubernetes(k8s) 实践之路 : 生产可用环境及验证
上一篇< 01 | 健康之路 kubernetes(k8s) 实践之路 : 开篇及概况 >我们介绍了我们的大体情况,也算迈出了第一步.今天我们主要介绍下我们生产可用的集群架设方案.涉及了整 ...
- java并发笔记之四synchronized 锁的膨胀过程(锁的升级过程)深入剖析
警告⚠️:本文耗时很长,先做好心理准备,建议PC端浏览器浏览效果更佳. 本篇我们讲通过大量实例代码及hotspot源码分析偏向锁(批量重偏向.批量撤销).轻量级锁.重量级锁及锁的膨胀过程(也就是锁的升 ...