Apple app store拒绝;如何找到哪个lib有字符串引用" transition:didComplete:"

时间:2016-09-29 04:28:33

标签: ios objective-c appstore-approval nm otool

我们被Apple拒绝了。一直发生吗?但这一次我们有点难过。这种解决问题的旧方法并没有为解决方案提供线索。

来自Apple:

  
      
  1. 5性能:软件要求
  2.         

    表现 - 2.5.1

         

    您的应用使用或引用了以下非公开API:

         

    过渡:didComplete:

         

    App Store上不允许使用非公共API,因为   如果这些API发生变化,它可能会导致糟糕的用户体验。

这个应用程序已经存在了大约五年,这些年来,主要是由于业务需求,它有很多参考第三方SDK。这是我们关注的焦点,但是这条线路干得很快,并且在我们发现包含这些旧代码的部分之前,所有内容都会被大量删除。

我们知道它不是符号,otoolnm找不到任何内容。 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$ 

1 个答案:

答案 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