我们正在使用 TestFlight 来发送我们应用程序的飞行员。
应用程序的一部分崩溃了,我们在重现崩溃时遇到了很多麻烦。他们的代码相当简单。
事实证明,通过 TestFlight 获得应用程序的用户会崩溃,而如果您构建应用程序并使用 IDE 安装它,它不会崩溃!
有人对可能导致这种情况的原因有任何想法吗?
任何解决方法的想法?我们不想停止使用 TestFlight。
我们正在使用 TestFlight 来发送我们应用程序的飞行员。
应用程序的一部分崩溃了,我们在重现崩溃时遇到了很多麻烦。他们的代码相当简单。
事实证明,通过 TestFlight 获得应用程序的用户会崩溃,而如果您构建应用程序并使用 IDE 安装它,它不会崩溃!
有人对可能导致这种情况的原因有任何想法吗?
任何解决方法的想法?我们不想停止使用 TestFlight。
确保在发布模式而不是调试中构建您的应用程序。该应用程序可能仅在发布时崩溃。
我要尝试的第一件事是将崩溃堆栈跟踪映射到应用程序中的函数名称。这可能会对崩溃的性质产生有用的洞察:
手动符号化:只要您的构建有调试信息,这将起作用。
对可执行文件 (Payload/AppName.app/AppName) 运行以下命令:
otool -tv AppName.app | c++filt>listing.asm
等待上一步完成(可能需要一段时间)。生成的listing.asm 文件将有几兆字节长。
当然,如果你能够符号化,你可以跳过这个过程。
祝调试顺利!
我们遇到了类似的问题。我们的问题是静态库。当我们从头开始构建应用程序并进入 testflight 时,它正在崩溃,但从 IDE 中却没有。崩溃是因为在构建时没有包含静态库,但是如果我直接连接 iPad 并使用 XCode 安装,就会被包含在内。
一个简单的测试将证明这一点:-
1.) 不要从 IDE 构建,而是创建一个 .app 文件,然后通过 iTunes 加载它并检查您是否遇到崩溃。
我们通过手动创建 .iPA 来解决这个问题,即创建 .app 然后创建一个 Payload 文件夹并将 .app 与 info.plist 一起放入其中。
然后事情也开始在 Testflight 中发挥作用。