苹果应用商店拒绝;如何找到哪个lib有字符串引用“transition:didComplete:”
我们被Apple拒绝了。所有的时间都适合吗?但是这一次我们有点难住。陈述这个问题的旧方法并没有提供解决方案的线索。苹果应用商店拒绝;如何找到哪个lib有字符串引用“transition:didComplete:”
从苹果:
开始=>
- 5功率:软件要求
性能 - 2.5.1
你的应用程序使用或引用了下列非 - 公共API:
transition:didComplete:
在App Store上不允许使用非公共API,因为 如果这些API发生变化,它可能会导致糟糕的用户体验。
这个应用程序已经有近五年了,多年来,主要是由于业务需求,它有很多第三方SDK的参考。这是我们关注的重点,但是这个痕迹很快就会干涸,并且正在变成一个大规模的一切事物,直到我们找到包含这个旧代码的碎片。
我们知道这不是一个符号,otool
和nm
什么都没有找到。 strings
确实找到了匹配(在调试版本中为1次,在最终版本构建中为2次,如果这是线索或有所作为)。这似乎是一个调用是UIKit,所以我认为情况并非如此。
有没有人对如何进行任何建议吗?
我们要通过每一个归档/ lib目录/二进制就可以在项目中找到引用和做字符串搜索。如果失败了,我们将把每个SDK都撕掉,并进行破坏性的二进制搜索来寻找有罪的派对......如果有一个关于如何解决这个问题的热门技巧,我全都是耳朵!
这里是命令行输出(字符串,otool,和纳米):
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$
包含字符串的LIB “过渡:didComplete:” 从4.x的谷歌Play游戏库来为C++。我们也在最新的5.1.1中发现它。
命令/脚本,我跑去找一个文件里这个字符串可能是这个答案的最有用的部分:从您的iOS项目的根目录
Dev-MBP:helloworldproj codemonkey$ find . -type f | while read i; do grep 'transition:didComplete' "$i" >/dev/null; [ $? == 0 ] && echo $i; done
运行(假设你的框架,你加入都该目录下)
我们现在可以在写这个命令的最有效的方式故意的。我已经有一个建议:
从一个朋友:
当然,它可以改进。 -l选项的grep做的 同样的事情,所以......
find . -type f | while read i do grep -l 'transition:didComplete' "$i" done
试'的grep -R '过渡:didComplete' *','-r'或'-R'代替'-C ' – TonyMkenu
如果您使用链接地图构建应用程序,则应该显示解析该符号的内容。 –