喜接新项目往往预示的会出一堆问题。解决问题的同时往往也就是学到更多东西的时候,这也许就是学习到新东西最直接最快速的方法吧!

小编经过努力,新项目终于过测试了,可是被苹果大大给拒了,好苦啊,最近的审核真的是没有谁了。这回被拒是因为项目中存在私有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的更多相关文章

  1. 怎么获取iOS的私有API

    前言 作为iOS开发人员,相信大多数伙伴都对怎么获取iOS的私有API很有兴趣,最近通过查找资料,总结了以下三种方法,希望对你有用. 第一种(class-dump) 不得不说这是一个很棒的工具,安装和 ...

  2. iOS private-api-checker私有API检测

    转自: http://www.jianshu.com/p/07779e293ca7 注:  '根目录' 指的是 private-api-checker 包的目录 iOS-private-api-che ...

  3. (iOS)私有API的使用(原创)

    最近在做企业级程序,需要搞设备的udid等信息,但是ios7把udid私有化了,不公开使用.所以研究了一下ios的私有api. 调查了一下文章,发现这方面的文章不多,国内更是不全,高手们都懒得写基础教 ...

  4. IOS私有API的使用(转)

    最近在做企业级程序,需要搞设备的udid等信息,但是ios7把udid私有化了,不公开使用.所以研究了一下ios的私有api.   调查了一下文章,发现这方面的文章不多,国内更是不全,高手们都懒得写基 ...

  5. ios中通过调试来使用私有api

    转自:http://blog.csdn.net/cubepeng/article/details/11284173 OS不允许使用ios私有api,使用私有api可以获得意想不到的效果 ,同时使用私有 ...

  6. class-dump获取iOS私有api

    转自:http://blog.csdn.net/sunyuanyang625/article/details/41440167 获取各类iOS私有api 安装工具class-dump 资源地址http ...

  7. iOS 私有API调用

    最近自己在做一个小程序,想实现一个一键设置手机壁纸的功能.但在iOS公开的API里找不到相关的方法,只能从私有API入手. 网上有不少教程,不过都不是很详细.从google和https://stack ...

  8. iOS - APP审核Guideline 2.5.1被拒,使用了私有API

    最近iOS 审核被拒,说是使用了私有API:com.apple.springboard.lockcomplete 具体内容如下: 发件人 Apple . Performance: Software R ...

  9. iOS buttonWithType:101 苹果私有api

    无意中发现,有人创建UIButton这样写 UIButton *previousButton = [UIButtonbuttonWithType:101]; 一看原来是私有api UIButton * ...

随机推荐

  1. ~~Python解释器安装教程及环境变量配置~~

    进击のpython Python解释器安装教程以及环境变量配置 对于一个程序员来说,能够自己配置python解释器是最基础的技能 那么问题来了,现在市面上有两种Python版本 Python 2.x ...

  2. C# Winform --xml文件

    背景: 在工作中,学习和使用OPC Server/Client系统时,发现开发的设计结构是把设备PLC的TAGLIST写为XML文件,在程序启动的时候载入从而完成自动配置. 从而开始了C# ASP.N ...

  3. 比赛:小奔的矩形solution

    分析: 交叉相乘,然后除以最大公因数(为了减少爆常数的可能性std做了两次,数据很大),得到的两个数相加减二就是答案 代码: var p,q,n,m,a,b,i:int64; begin readln ...

  4. xpath路径的写法

    关于xpath路径的写法 1.选取节点 表达式 描述 nodename 选取此节点的所有子节点. / 从根节点选取. // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置. . 选取当前节点 ...

  5. C语言入门9-2-模块大致一览

    字母数字 判断字符是否为英文字母isalpha()判断字符是否为数字isdigit()判断字符是否为英文字母或数字isalnum()判断字符是否为小写字母islower()判断字符是否为大写字母isu ...

  6. 动手造轮子:基于 Redis 实现 EventBus

    动手造轮子:基于 Redis 实现 EventBus Intro 上次我们造了一个简单的基于内存的 EventBus,但是如果要跨系统的话就不合适了,所以有了这篇基于 Redis 的 EventBus ...

  7. 显示Mac隐藏文件的命令:

    设置查看隐藏文件的方法如下:打开终端,输入命名 显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏 ...

  8. linux下pip的安装

    ---恢复内容开始--- 1 输入apt-cache search wxpython 如果有返回信息 则输入 sudo apt-get install python-tools 2 否则 1.添加软件 ...

  9. File signature analysis fails to recognize .old file

    My friend May she found a strange file called "bkp.old" as below in the evidence files. Sh ...

  10. 基于Docker的GitLab搭建

    今天写一些Docker搭建GitLab,好久没有写博客园了,今天又回来了,为了学习技术? 建议使用Linux内核系统,或者虚拟机,首先安装docker环境(菜鸟教程) 一.下载镜像文件 如果慢的话,可 ...