2015-02-17 62 views
24

我建立了一个快速的应用程序,它大量使用了iPhone 6,iPhone 6 plus和iPhone 5设备和在Xcode提供的所有模拟器进行测试。该应用运行良好,不会在本地上传时崩溃。 (iOS 8)应用程序崩溃只有在Testflight构建

我终于提交了一个TestFlight的构建。在通过Testflight构建下载应用程序后,该应用程序在同一地点始终崩溃。

是否有一个地方上传建立不同的运行速度比在本地创建构建了一个已知的问题?我怎样才能用Testflight构建来调试这个问题?

+0

曾经有同样的问题。我在我的设备上删除了应用程序并重新安装了它。这有帮助。你尝试过吗? – croX 2015-02-17 20:27:33

+0

是的,我删除了一切,甚至擦去了我的一个设备。在使用Testflight下载应用程序的所有设备上,它会在相同的地方崩溃。当我在本地安装构建(通过Xcode)时,它从不崩溃。 – Taylor 2015-02-17 20:29:11

+0

如果应用程序在使用时崩溃,那么你的代码中有一个错误。您需要为其他人提供符号化的崩溃报告,以便提供有关正在发生的事情的提示。 – Kerni 2015-02-17 20:30:27

回答

3

我通过改变迅速编译器优化从fastestnone解决的问题。我不确定这是否是一个理想的长期解决方案,但构建不再崩溃。

49

我想它是一个迅速的编译器问题。为了验证第一次去编辑方案那么构建配置更改为发布模式运行选项卡,然后在本地安装版本。你会知道到底发生了什么。

+11

我实际上通过将swift编译器优化从最快更改为无,解决了问题。我不确定这是否是一个理想的长期解决方案,但构建不再崩溃。 – Taylor 2015-02-18 18:37:14

+0

这里同样的问题。你如何改变“swift编译器优化”? – Vakas 2015-10-31 11:25:28

+2

1)构建设置 2)Swift编译器 - 代码生成 3)优化级别 – Pugin 2016-09-20 22:27:10

1

如果其他人是否有同样的问题,这里就是我的修补程序是:

我终于得到这个问题降低到循环使用if语句,类似于此 -

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

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

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

我觉得这是一个编译器错误,不然我的“修复”不应该是固定的。但在这里它可以帮助其他人!

+2

不是很有用......你应该清理它,然后重新运行比这个冗余编码。 – nferocious76 2015-11-28 13:25:39

2

这可能是位码相关的问题。请检查您的所有第三方库支持位码,然后再只设置位码到YES,否则设置为NO

其实位编码是编译程序的中间表示。您上传到iTunes Connect的包含位码的应用程序将在App Store上编译和链接。

+0

我的情况!谢谢! – Bimawa 2017-10-31 10:04:47

1

,而不是在空i += 1; while循环。

我做这在我的空while循环:RunLoop.current.run(until: Date(timeIntervalSinceNow: 1))

而且现在TestFlight应用不会弹!

更短的时间也可能工作,如:RunLoop.current.run(until: Date(timeIntervalSinceNow: 0.25))