我们被Apple拒绝了。一直发生吗?但这一次我们有点难过。这种解决问题的旧方法并没有为解决方案提供线索。
来自Apple:
- 5性能:软件要求
醇>表现 - 2.5.1
您的应用使用或引用了以下非公开API:
过渡:didComplete:
App Store上不允许使用非公共API,因为 如果这些API发生变化,它可能会导致糟糕的用户体验。
这个应用程序已经存在了大约五年,这些年来,主要是由于业务需求,它有很多参考第三方SDK。这是我们关注的焦点,但是这条线路干得很快,并且在我们发现包含这些旧代码的部分之前,所有内容都会被大量删除。
我们知道它不是符号,otool
和nm
找不到任何内容。 strings
找到一个匹配(在调试版本中有1次,在我们的最终版本构建中有2次,如果这是一个线索或有所作为。)这似乎是一个调用是UIKit所以我假设不会是这样的。
有没有人对如何继续提出任何建议?
我们正在浏览项目中引用的每个archive / lib / binary并进行字符串搜索。如果失败了,我们就要把每个SDK都拆掉,然后做一个破坏性的二元搜索来找到有罪的一方...如果有一个关于如何解决这个问题的热门提示,我全都听见了!
这是命令行输出(字符串,otool和nm):
Dev-MBP:helloworld.app codemonkey$ otool -ov helloworld | grep -C 10 "transition:didComplete"
Dev-MBP:helloworld.app codemonkey$ nm helloworld | grep -C 10 "transition:didComplete"
Dev-MBP:helloworld.app codemonkey$ strings helloworld | grep -C 3 "transition:didComplete"
destinationLayout
prepareTransition:
performTransition:
transition:didComplete:
destinationViewController
sourceViewController
isViewTransition
--
--
destinationLayout
prepareTransition:
performTransition:
transition:didComplete:
destinationViewController
sourceViewController
isViewTransition
Dev-MBP:helloworld.app codemonkey$ strings helloworld | grep "transition:didComplete"
transition:didComplete:
transition:didComplete:
Dev-MBP:helloworld.app codemonkey$
答案 0 :(得分:0)
包含字符串“transition:didComplete:”的lib来自用于c ++的4.x Google Play游戏库。我们也在最新的5.1.1中找到了它。
我运行的命令/脚本在文件中找到这个字符串可能是这个答案中最有用的部分:
Dev-MBP:helloworldproj codemonkey$ find . -type f | while read i; do grep 'transition:didComplete' "$i" >/dev/null; [ $? == 0 ] && echo $i; done
从iOS项目的根目录运行(假设您添加的框架都在该目录下)
我们现在可以考虑编写此命令的最有效方法。我已经有了一个建议:
来自朋友:
当然,它可以改进。 grep的-l选项可以实现 同样的事情,所以...
find . -type f | while read i do grep -l 'transition:didComplete' "$i" done