gpt4 book ai didi

ios - 该应用程序包含或继承自 payload/XXX.APP/XXX : UIKeyboard 中的非公共(public)类

转载 作者:可可西里 更新时间:2023-11-01 04:41:30 27 4
gpt4 key购买 nike

我在提交应用程序时收到此 App Store 错误。我能够在一个月前提交相同的应用程序,但我没有遇到这个问题。上次我提交时,它给了我错误,但它仍然至少接受二进制文件。现在它甚至不接受二进制文件。我确实使用如下代码。

valueTextField.keyboardType = UIKeyboardTypeNumbersAndPunctuation;

我不确定我的图书馆是否没有达到预期。是否有任何其他解决方法?

如果我必须向苹果发送电子邮件,我是否也应该向他们发送二进制文件? enter image description here

编辑:Brian,我已经在 .app 文件上完成了 nm 和字符串。下面是结果。你能建议下一步做什么吗?

enter image description here

最佳答案

您的错误与该特定代码行无关。编译后,该行减少为有效的调用:

objc_msgSend(valueTextField, SEL(setKeyboardType:), (NSInteger)2);

您的二进制文件中不会提及 UIKeyboard。

您还可以通过在二进制文件上运行 nmstrings 来验证您的代码没有引用 UIKeyboard:

nm MyApp.app/MyApp | grep UIKeyboard
strings MyApp.app/MyApp | grep UIKeyboard

这将向您显示您可能对 UIKeyboard 有的任何字符串或符号引用。如果没有,命令应该为空,否则 nm 会输出如下内容:

U _OBJC_CLASS_$_UIKeyboard

根据其他人遇到过的事实,Apple 的提交流程目前似乎存在问题。如果问题没有自行消失,您可以尝试三种不同的提交 channel :

  • 通过 iTunes Connect Web UI 上传
  • 从 Xcode 中提交您的文件。窗口 -> 管理器 -> 文件 -> 提交...
  • 通过 Application Loader 提交您的应用。

更新

查看您的编辑,您的应用程序实际上确实引用了 UIKeyboard。由于听起来您的代码没有使用 UIKeyboard,因此第三方库可能是罪魁祸首。您有几个选择:

追踪引入更改的提交:

由于您在应用程序商店中有一个以前的版本,您应该能够从您的 SCM 中 check out 该应用程序的版本,构建它,运行 nm MyApp.app/MyApp | grep UIKeyboard 并验证您没有引用该类。如果不是这种情况,事情会变得更难,你应该跳到我的下一个建议。

您现在可以通过将好的和坏的提交一分为二来追踪引入依赖关系的提交。如果使用 git,git bisect是你的 friend :

  1. git bisect master SHA_OR_TAG_OF_PREVIOUS_RELEASE
  2. 构建应用。
  3. nm MyApp.app/MyApp | grep UIKeyboard
  4. 如果好,git bisect good,否则git bisect bad
  5. 重复第 2 步到第 4 步,直到找到引入问题的提交。

一旦您发现了错误的提交,应该很清楚您更新了哪个库来引入问题。您可以检查新更新、还原更新或解决问题所需的任何内容。如果您无法立即找出是哪个原因导致的,则可以执行下一步。

在您的应用使用的框架和库上运行 nm:

由于您在代码中找不到对 UIKeyboard 的引用,您很可能链接到引用它的库。您需要在这些库中的每一个上运行 nm 以追踪罪魁祸首。

您可以在“Link Binary With Libraries”阶段下的“Build Phases”下找到您的应用链接到的所有框架。您可以忽略工作区中其他项目的系统框架和库,只关注任何第三方 .a 文件或框架。

如果您将 Cocoapods 用于所有事情,您可以继续检查 libPods-*.a 以快速查看是否有任何 pod 引用代码。如果你找到一个匹配项,重新运行 nm 管道到 less 并继续按下直到你看到一个路径名和目标文件名,它将指向你负责的库。

否则,对每个 .a 文件和每个 .framework 目录中的二进制文件运行 nm

nm myLibrary.a | grep UIKeyboard
nm SomeComponent.framework/SomeComponent | grep UIKeyboard

获得匹配项后,您可以检查是否有新版本的框架或报告问题。如果您在库中发现它不应该在生产中链接到它,请找到一种方法将其删除。

关于ios - 该应用程序包含或继承自 payload/XXX.APP/XXX : UIKeyboard 中的非公共(public)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26691095/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com