【问题标题】:Does apple view the actual source code when approving apps?苹果在批准应用程序时是否查看实际源代码?
【发布时间】:2011-03-12 07:51:53
【问题描述】:

Apple 究竟如何批准应用程序?是否查看了实际的源代码?

【问题讨论】:

标签: iphone app-store appstore-approval


【解决方案1】:

虽然我们都无权访问内部审核流程(似乎在不断变化),但根据人们收到的回复,我们可以说一些事情。

首先,Apple 无法访问您的源代码,因此他们不会对其进行审查。您提交一个二进制文件作为应用程序包的一部分,以及您的其他应用程序资源。

但是,它们似乎会扫描您应用程序的二进制文件以查找某些指示使用私有 API 的符号。一些应用程序在 iPhone OS 更新后开始崩溃,因为它们使用了这些私有 API,因此苹果一直在打击这一点。

商店中有很多应用程序存在内存泄漏或其他性能问题。我知道我提交的应用程序版本存在细微泄漏(自修复以来)并且审核没有问题。因此,他们似乎没有进行任何类型的性能测试或分析。

内存泄漏导致审查出现问题的唯一地方是内存泄漏严重到应用程序在审查者测试时崩溃。如果您的申请在审核过程中的任何时候崩溃,它将被拒绝。

除此之外,他们还有一个用户界面元素清单,他们检查是否正确使用(表视图行上没有持久选择等)。如果您的应用程序在使用这些标准 UI 元素时明显偏离了Human Interface Guidelines,您可能会被拒绝。

Apple 对版权非常谨慎,尤其是他们自己的图片和艺术品,因此如果您不当使用受版权保护的材料,您可能会遇到麻烦。

您将面临的大多数拒绝原因都可以通过使您的应用程序稳定并遵循平台指南来避免,但有些则不是。某些类别的应用程序由于其预期用途而被拒绝,并且商店允许的应用程序类别也会定期更改。这可能会在与 App Store 打交道时增加挫败感和不确定性,但绝大多数应用程序类型永远不会遇到问题(从目前可用的应用程序的多样性中可以看出)。

【讨论】:

  • @MacMark - 不,他们没有,这不是发生的事情。你在你的机器上构建一个二进制文件,然后把那个二进制文件发送给他们。从 Objective-C 编译的二进制文件可以为它们调用的方法保留符号,因此可以转储和扫描这些符号。此外,Apple 有可能在他们自己专门构建的框架中运行您的二进制文件,并查看该二进制文件何时调用它不应该调用的东西。鉴于人们报告的误报方法恰好与 Apple 的私有方法相匹配,因此符号扫描方法是最有可能的。
  • @MacMark - 在此过程中,Apple 不会接收您自己的源代码,并且不会在您的本地计算机上分析 API 使用情况。他们现在在 Xcode 中有一个助手,可以将您的二进制文件发送到 Apple 的服务器上进行验证,但他们不会扫描您的本地代码。
  • 提交前没有识别“分析API使用情况”?
  • @MacMark - 你在哪里看到的?当我构建和归档应用程序时,它只是执行正常的编译/链接/协同设计周期(可选地,我在本地使用 Clang 静态分析器来查找我的代码中的错误,但这些都没有以任何方式传达给 Apple) ,生成一个存档的、代码签名的二进制文件。然后提交给 Apple 的是完成的二进制文件。上次我提交二进制文件时,它对其进行了服务器端验证。即使他们将部分分析移到本地,它仍然只是查看您的二进制文件,而不是任何源代码。
  • 我在 Xcode 和/或 Application Loader 中上传之前看到了它。这意味着可以检查源代码,因为检查发生在我的机器上。但是检查应用程序二进制文件的 API 使用对于机器来说更容易,所以他们不想检查源代码。
【解决方案2】:

尝试自己使用 otool -L 二进制文件,您可以立即看到是否使用了私有 API 框架...

【讨论】:

    【解决方案3】:

    Apple 不关心您的应用程序的泄漏和分析信息。如果失控,操作系统能够杀死您的应用程序。他们实际上做的是手动运行你的应用程序并检查它是否遵循苹果的一些指导方针。在自动化过程中,他们从您的二进制文件中提取符号、选择器和字符串,并检查它们是否使用了私有 API。

    您可能想在您的(模拟器)二进制文件上尝试nm -u

    【讨论】:

      【解决方案4】:

      不,他们只能访问您发送给他们的二进制代码。

      他们可以通过探查器来检查内存泄漏等情况。

      【讨论】:

        【解决方案5】:

        他们无权访问您的来源;它不是您发送给他们的内容的一部分。他们测试您发送给他们的二进制文件是否存在泄漏等。我认为他们还会检查您的应用发送的数据,以确保它没有做任何非常糟糕的事情(发送密码等)。

        【讨论】:

          【解决方案6】:

          他们只接收您的 ipa 二进制文件。他们可以在提取 ipa 时获取您的一些资源文件。他们可以找到您在 Web 服务或 url 请求中使用的所有 url。除此以外别无其他。

          【讨论】:

            猜你喜欢
            • 2011-03-29
            • 2014-01-14
            • 2013-12-03
            • 1970-01-01
            • 2014-06-27
            • 2013-02-13
            • 2011-11-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多