我的项目是基于Objective-C的,并且有一些第三方快速代码。
该应用程序在调试模式下运行正常,但是,当我将应用程序存档为发布模式时,应用程序将在启动屏幕时崩溃。
将swift优化级别设置为None仍然存在相同的问题。我安装了crashlytics 3.7,但它在启动时崩溃,它没有机会上传崩溃。我非常绝望。有什么想法吗?
更新
我试图删除所有快速的东西和存档,一切都像往常一样。但是,一旦我将swift文件拖入基于Objective-C的项目,运行(调试)应用程序就可以了。但如果存档(发布)并将其安装在iPhone上,则会在发布时立即崩溃。我缺少什么?
答案 0 :(得分:4)
好的,经过数千次存档和测试后,我发现它是由内部发布引起的。
它正在混淆一个属性' OU'在证书中。我不得不重新创建一个新的证书,现在它有' OU'那里。看起来Apple在处理采用swift代码的旧项目时根本没有提到它。
来自Enterprise Distribution not playing nice with iOS8 in Swift App
本文详细解释了所有内容:
https://www.airsignapp.com/ios-apps-using-swift-crash-when-signed-with-inhouse-certificate/
We can confirm that after create a new cert and .mobileprovision, no more issues.
We found origins that caused this issue, related to a missing attribute in “Subject” field InHouse Certificates :
BEFORE Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, O=Company Name, C=FR
AFTER Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR
答案 1 :(得分:1)
我会发布这是一个答案,因为我没有代表发表评论。我有类似的问题,虽然与Swift无关。可能值得一试。
对我来说,问题与Xcode中的文件删除有关。我从Xcode项目中删除了一些文件,但它们仍然存在于我的硬盘驱动器上的文件夹中。当通过Xcode运行项目时,它会加载这些文件,就像它们是项目的一部分一样,但是在归档时它不会包含它们。这使得应用程序在运行Xcode时运行良好,但在运行存档版本时崩溃,因为它试图加载不存在的东西。
因此,要检查的一件事是,启动应用程序时应加载的文件在Xcode的项目导航器中可见。希望它可以提供帮助!