0

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

来自苹果:

  1. 5 性能:软件要求

性能 - 2.5.1

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

过渡:完成:

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

这个应用程序已经有大约五年了,多年来,主要是由于业务需求,它有很多对 3rd 方 SDK 的引用。这是我们集中注意力的地方,但是线索很快就干涸了,并且正在变成大量删除所有内容,直到我们找到包含此旧代码的部分。

我们所知道的是它不是一个符号, otoolnm没有找到任何东西。strings确实找到了一个匹配项(调试版本中的 1 次,我们的最终版本版本中的 2 次,如果这是一个线索或有所不同的话。)这似乎是 UIKit 的调用,所以我假设情况并非如此。

有人对如何进行有任何建议吗?

我们正在检查项目中引用的每个存档/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$ 
4

1 回答 1

0

包含字符串“transition:didComplete:”的库来自 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
于 2016-10-07T19:37:29.050 回答