应用程序仅在Testflight Build上崩溃

时间:2015-02-17 20:23:39

标签: ios objective-c xcode swift

我在swift上创建了一个应用程序,并使用iPhone 6,iPhone 6 plus和iPhone 5设备以及Xcode提供的所有模拟器进行了大量测试。该应用运行正常,并在本地上传时不会崩溃。 (iOS 8)

我终于提交了Testflight的构建版本。通过Testflight构建下载应用程序后,应用程序在同一位置始终崩溃。

是否存在已知问题,其中上载的构建与本地创建的构建运行方式不同?我如何使用Testflight构建调试问题?

11 个答案:

答案 0 :(得分:58)

我猜它是一个快速的编译器问题。要先验证修改方案,然后在运行标签中将构建配置更改为发布模式,然后再安装在本地建立。你会知道它崩溃的原因。

答案 1 :(得分:7)

我通过将快速编译器优化从fastest更改为none来解决了这个问题。我不确定这是否是一个理想的长期解决方案,但构建不再崩溃。

答案 2 :(得分:4)

可能是 Bitcode 相关问题。检查您的所有第三方库是否支持bitcode,然后仅将bitcode设置为 YES 否则设置为 NO

实际上Bitcode是编译程序的中间表示。您上传到iTunes Connect的包含bitcode的应用将在App Store上进行编译和链接。

答案 3 :(得分:1)

如果其他人遇到同样的问题,这就是我的修复方法:

我终于把问题归结为一个带有if语句的循环,类似于这个 -

while(condition)
{
    if (check)
    {
        code!
    }
    //There was no code here
}

请注意,循环结束时没有代码(注释所在的位置)。一旦我添加了一个随机的代码(在这种情况下,为输出增加一个变量),问题就停止了。

while(condition)
{
    if (check)
    {
        code!
    }
    i += 1;
    output statement
}

我认为这必须是编译器错误,否则我的“修复”根本不应该是修复。但这是为了防止其他任何人!

答案 4 :(得分:1)

而不是空的while循环中的i += 1;

我在空的时候做了这个循环:RunLoop.current.run(until: Date(timeIntervalSinceNow: 1))

现在TestFlight应用程序不会轰炸!

较短的时间也可能有效,例如:RunLoop.current.run(until: Date(timeIntervalSinceNow: 0.25))

答案 5 :(得分:1)

就我而言,将“旧版构建系统”更改为“新构建系统”(对于Xcode 10)解决了我的问题,其中Testflight构建的行为有所不同。可能会对某人有所帮助。

答案 6 :(得分:1)

对于所有面临类似问题的人,请按照以下步骤操作

转到 Xcode->寡妇->组织者,然后选择崩溃标签,然后选择您的应用。 如果您已将Apple帐户添加到 Xcode-> preferences->帐户中,则Xcode会下载所有崩溃报告,甚至用于testflight版本。

它将具有堆栈跟踪,您无需像以前那样将其象征化。 PS:-我见过的最常见的是UISearchDisplayController问题

答案 7 :(得分:1)

对于仍然存在此问题的任何人,您都可以运行此命令以发布模式运行它,与归档构建时相同。这样,您可以更轻松地调试问题:

react-native run-ios --configuration Release 

答案 8 :(得分:0)

我不得不更改存档版本中的设置,以进行调试版本来解决类似的问题,iOS实际上允许将调试版本发送到testflight,以解决我的问题以进行初始测试。

尽管后来我知道我在应用程序中使用共享扩展名作为目标,但我的应用程序中缺少了授权文件。

我没有看到有关授权问题的堆栈溢出的任何信息。我浪费了很多时间。希望这对以后像我这样的人有帮助。

答案 9 :(得分:0)

就我而言,这是在开始使用Xcode 11之后发生的。这是一个UISearchDisplayController(自iOS 8起不推荐使用),似乎可以在设备或模拟器上以调试模式运行,但在发行版本中却没有。 Xcode 11.3在代码中未给出任何内联警告。 崩溃很难找到,因为不再使用搜索控制器,它是孤立的代码。

答案 10 :(得分:0)

我明白了(部分!)。实际上,迅速项目中的UI_USER_INTERFACE_IDIOM()“释放”实现会使应用程序崩溃。

但是,我仍然不知道为什么我们的应用程序商店应用程序(基于目标C语言)不会崩溃。

我唯一的猜测是,它在Apple的UI_USER_INTERFACE_IDIOM()API实现中出现了小故障。

无论如何,我将所有UI_USER_INTERFACE_IDIOM()替换为UIDevice()。 userInterfaceIdiom。我希望这对某人有帮助!