之前接了一个旧的项目,代码混乱,年代久远,不得不吐槽一波,好不容易改完需求提交代码,说用到了non-public APIs,搞了好久终于找到地方了,下面是我的解决过程,让大家少走弯路:
下面的被驳回的原因:
Your app uses or references the following non-public APIs:
setTimeOut:
The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.
原因是因为用到了名称叫setTimeOut:
的api,在工程中检索了一下发现并没用用到,那肯定是在SDK或者.a的静态库里面用到了,这个项目的第三方很久没有更新了,估计是之前的SDK用到了,下面是查找过程:
首先打开终端,cd到项目的当前目录中:
cd (drag and drop your project folder here) Your_Project_Path
分别输入一下命令行,来找到使用了
setTimeOut:
的SDK或者.a的静态库:find . | grep -v .svn | grep "\.a" | grep -v "\.app" | xargs grep setTimeOut:
grep -lr "setTimeOut:" * | grep -v .svn | grep -v .md
根据终端的提示找到对应的地方,将SDK替换成官方最近的SDK,然后再用第二个步骤在确认一遍,确认无误后提交代码。
总结: 像我的项目就是AMapSearchKit这个SDK已经是很早之前的SDK了,苹果公司可能更新了non-public APIs,而之前老的SDK用到了或者名称是类似的名称,导致应用审核不通过,没办法,干不过苹果公司就只能屈服了,要么更改方法名称要么换一个SDK,最后谢谢大家的阅读,有什么问题可以留言问我~~