【问题标题】:iOS application crashes after AppStore publicationAppStore 发布后 iOS 应用程序崩溃
【发布时间】:2014-10-08 10:11:13
【问题描述】:

当我使用 XCode 运行应用程序时,它运行良好。我尝试了我的 iOS 7、iOS 8 设备和模拟器。我将应用程序发布到 App Store,更新后它在启动屏幕上崩溃。我还尝试将应用程序上传到预发布到 TestFlight 应用程序中,它也在启动屏幕上崩溃了。能帮忙调试一下吗?

崩溃日志:

Incident Identifier: 5C421B8B-BFBF-475E-8C06-F5B76E3B36F4
CrashReporter Key:   1e8c22653ed4eb9bb1cec65ac6feb9963cf3ce48
Hardware Model:      iPhone6,2
Version:             1 (2.0.0)
Code Type:           ARM-64 (Native)
Parent Process:      launchd [1]

Date/Time:           2014-10-08 12:36:24.760 +0400
Launch Time:         2014-10-08 12:36:23.547 +0400
OS Version:          iOS 8.0.2 (12A405)
Report Version:      105

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x0000000100134690
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   majorapp                        0x0000000100134690 @objc majorapp.SideBarViewController.init (majorapp.SideBarViewController.Type)(coder : ObjectiveC.NSCoder) -> majorapp.SideBarViewController (SideBarViewController.swift:30)
1   UIKit                           0x000000018bbedab0 -[UIClassSwapper initWithCoder:] + 232
2   UIKit                           0x000000018bcc5638 UINibDecoderDecodeObjectForValue + 808
3   UIKit                           0x000000018bcc52f4 -[UINibDecoder decodeObjectForKey:] + 340
4   UIKit                           0x000000018bbed5e0 -[UIRuntimeConnection initWithCoder:] + 164
5   UIKit                           0x000000018bcc5638 UINibDecoderDecodeObjectForValue + 808
6   UIKit                           0x000000018bcc55d8 UINibDecoderDecodeObjectForValue + 712
7   UIKit                           0x000000018bcc52f4 -[UINibDecoder decodeObjectForKey:] + 340
8   UIKit                           0x000000018bbeca40 -[UINib instantiateWithOwner:options:] + 1096
9   UIKit                           0x000000018bdab9ec -[UIStoryboard instantiateViewControllerWithIdentifier:] + 216
10  UIKit                           0x000000018bdaef5c -[UIStoryboardSegueTemplate _perform:] + 84
11  majorapp                        0x00000001001f23e0 -[SWRevealViewController loadStoryboardControllers] (SWRevealViewController.m:671)
12  majorapp                        0x00000001001f2610 -[SWRevealViewController loadView] (SWRevealViewController.m:733)
13  UIKit                           0x000000018b7e4a6c -[UIViewController loadViewIfRequired] + 84
14  UIKit                           0x000000018b7e49d8 -[UIViewController view] + 28
15  UIKit                           0x000000018b7eb0a0 -[UIWindow addRootViewControllerViewIfPossible] + 68
16  UIKit                           0x000000018b7e8844 -[UIWindow _setHidden:forced:] + 292
17  UIKit                           0x000000018b8596a8 -[UIWindow makeKeyAndVisible] + 52
18  UIKit                           0x000000018ba6cc0c -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 2800
19  UIKit                           0x000000018ba6f184 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1476
20  UIKit                           0x000000018ba6d81c -[UIApplication workspaceDidEndTransaction:] + 180
21  FrontBoardServices              0x000000018f26d63c __31-[FBSSerialQueue performAsync:]_block_invoke + 24
22  CoreFoundation                  0x000000018701a35c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 16
23  CoreFoundation                  0x0000000187019464 __CFRunLoopDoBlocks + 308
24  CoreFoundation                  0x0000000187017664 __CFRunLoopRun + 692
25  CoreFoundation                  0x0000000186f45660 CFRunLoopRunSpecific + 392
26  UIKit                           0x000000018b84f4fc -[UIApplication _run] + 548
27  UIKit                           0x000000018b84a4f4 UIApplicationMain + 1484
28  majorapp                        0x0000000100164ac8 main (AppDelegate.swift:0)
29  libdyld.dylib                   0x0000000197cb6a04 start + 0

Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0   libsystem_kernel.dylib          0x0000000197db4c94 kevent64 + 8
1   libdispatch.dylib               0x0000000197c9c97c _dispatch_mgr_invoke + 272
2   libdispatch.dylib               0x0000000197c8f4a0 _dispatch_mgr_thread + 48

Thread 2:
0   libsystem_kernel.dylib          0x0000000197dcfc78 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x0000000197e69390 _pthread_wqthread + 988
2   libsystem_pthread.dylib         0x0000000197e68fa4 start_wqthread + 0

Thread 3 name:  Dispatch queue: SCNetworkReachability.concurrent
Thread 3:
0   libsystem_kernel.dylib          0x0000000197dcf0c0 __psynch_mutexwait + 8
1   libsystem_pthread.dylib         0x0000000197e69548 _pthread_mutex_lock + 416
2   SystemConfiguration             0x000000018b77a92c __SCNetworkReachabilityUpdateConcurrent + 164
3   SystemConfiguration             0x000000018b77b0fc ____SCNetworkReachabilityUpdate_block_invoke + 40
4   libdispatch.dylib               0x0000000197c8d498 _dispatch_call_block_and_release + 20
5   libdispatch.dylib               0x0000000197c8d458 _dispatch_client_callout + 12
6   libdispatch.dylib               0x0000000197c96020 _dispatch_async_redirect_invoke + 688
7   libdispatch.dylib               0x0000000197c8d458 _dispatch_client_callout + 12
8   libdispatch.dylib               0x0000000197c99408 _dispatch_root_queue_drain + 1140
9   libdispatch.dylib               0x0000000197c9a758 _dispatch_worker_thread3 + 104
10  libsystem_pthread.dylib         0x0000000197e692e0 _pthread_wqthread + 812
11  libsystem_pthread.dylib         0x0000000197e68fa4 start_wqthread + 0

Thread 4 name:  Dispatch queue: SCNetworkReachability.concurrent
Thread 4:
0   libsystem_kernel.dylib          0x0000000197db4eb8 semaphore_wait_trap + 8
1   libdispatch.dylib               0x0000000197c9aa4c _dispatch_semaphore_wait_slow + 252
2   libxpc.dylib                    0x0000000197e92374 xpc_connection_send_message_with_reply_sync + 184
3   SystemConfiguration             0x000000018b7b0c9c __SCNetworkReachabilityServer_targetStatus + 192
4   SystemConfiguration             0x000000018b77d190 __SCNetworkReachabilityGetFlags + 440
5   SystemConfiguration             0x000000018b77a99c __SCNetworkReachabilityUpdateConcurrent + 276
6   SystemConfiguration             0x000000018b77b0fc ____SCNetworkReachabilityUpdate_block_invoke + 40
7   libdispatch.dylib               0x0000000197c8d498 _dispatch_call_block_and_release + 20
8   libdispatch.dylib               0x0000000197c8d458 _dispatch_client_callout + 12
9   libdispatch.dylib               0x0000000197c96020 _dispatch_async_redirect_invoke + 688
10  libdispatch.dylib               0x0000000197c8d458 _dispatch_client_callout + 12
11  libdispatch.dylib               0x0000000197c99408 _dispatch_root_queue_drain + 1140
12  libdispatch.dylib               0x0000000197c9a758 _dispatch_worker_thread3 + 104
13  libsystem_pthread.dylib         0x0000000197e692e0 _pthread_wqthread + 812
14  libsystem_pthread.dylib         0x0000000197e68fa4 start_wqthread + 0

Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x0000000000000001   x1: 0x000000020000078c   x2: 0x000000017810fa58   x3: 0x0000000197e09a74
    x4: 0x00000001782a0980   x5: 0x0000000000000001   x6: 0x000000017826b580   x7: 0x0000000000000000
    x8: 0x0000000000000000   x9: 0x000001a5982c81c9  x10: 0x0000000000000007  x11: 0x00000001982d48a0
   x12: 0x000000015d00dc00  x13: 0x000001a5982c81c9  x14: 0x0000000000003fff  x15: 0x0000000000000000
   x16: 0x0000000197e61698  x17: 0x0000000186f65f0c  x18: 0x0000000000000000  x19: 0x000000017810fa50
   x20: 0x4000000000000074  x21: 0x0000000170007af0  x22: 0x000000017810fa50  x23: 0x0000000178057df0
   x24: 0x0000000178057e20  x25: 0x0000000000000000  x26: 0x0000000000000000  x27: 0x0000000198eee000
   x28: 0x0000000198eee000  fp: 0x000000016fd054c0   lr: 0x0000000100134690
    sp: 0x000000016fd05480   pc: 0x0000000100134690 cpsr: 0x60000000

我使用 Swift,XCode 6,部署目标 iOS7+

更新:

方法代码:

required init(coder aDecoder: NSCoder)  {
    let path = NSBundle.mainBundle().pathForResource("menu_items", ofType: "plist")
    self.menuItems = NSArray(contentsOfFile: path!) as [NSDictionary]
    super.init(coder: aDecoder)
}

更新 3

我发现如果我在文件读取后添加睡眠它可以正常工作。真是奇怪。

不睡觉:

override func viewDidLoad() {
    super.viewDidLoad()
    if let path = NSBundle.mainBundle().pathForResource("menu_items", ofType: "plist") {
        self.menuItems = NSArray(contentsOfFile: path) as? [NSDictionary]
        NSLog("Path Exists");
        if let mi = self.menuItems {
            NSLog("Content Exists");
            NSLog("%@",mi)
        }
    }
    self.menuTableView.reloadData()
}

输出

Path Exists

self.menuItems 为零

有睡眠:

 override func viewDidLoad() {
    super.viewDidLoad()
    if let path = NSBundle.mainBundle().pathForResource("menu_items", ofType: "plist") {
        self.menuItems = NSArray(contentsOfFile: path) as? [NSDictionary]
        NSLog("Path Exists");
        if let mi = self.menuItems {
            NSLog("Content Exists");
            NSLog("%@",mi)
        }
        sleep(10)
        if let mi = self.menuItems {
            NSLog("Content Exists 2");
            NSLog("%@",mi)
        }
    }
    self.menuTableView.reloadData()
}

输出:

Path Exists
Content Exists
%here is data of my array%
Content Exists 2
%here is data of my array%

self.menuItems 不为零,在睡觉之前和之后! o_O

【问题讨论】:

  • 你的应用中有swift代码吗?
  • 尝试将构建设置“Embedded Content Contains Swift Code”中的标志从NO切换为YES
  • SideBarViewController.init(coder:) 的代码是什么?
  • @JohnKakon 看起来像这里描述的问题breefield.com/essays/critical-app-review
  • @JohnKakon 您可以在 Xcode 中的Window > Devices > (your device) 下看到您的应用程序的控制台输出。底部有一个控制台视图。您可能必须先使用窗口底部的小向上箭头将其拉起。

标签: ios xcode crash app-store


【解决方案1】:

我猜问题出在构建设置上,如果您在项目中使用 swift,您似乎应该将构建设置 "Embedded Content Contains Swift Code" 中的标志从 NO 切换为 YES。

我曾尝试在 Google 上搜索有关此标志的更多信息,并在苹果开发者门户网站上找到了一些信息:

在构建不包含 Swift 源文件的应用程序时 但嵌入其他内容(如框架、XPC 服务、应用程序 扩展程序等)确实包含 Swift 代码,您必须设置 构建设置嵌入内容包含 Swift 代码 (EMBEDDED_CONTAINS_SWIFT)。这样 Swift 库将 被包含在应用程序中。 (17757566)

我还看到这篇文章看起来像你的问题:breefield.com/essays/critical-app-review

【讨论】:

  • 描述和文章都说这个设置在这里没有帮助。仅当应用程序不使用 Swift 但包含使用的库时才相关。
  • 我尝试使用Embedded Content Contains Swift Code = YES 上传到TestFlight,但它仍然崩溃=(
  • @JohnKakon,嗯,当我将配置文件和代码签名身份不正确的构建上传到 testflight 时,我遇到了同样的问题
【解决方案2】:

我是如何解决这个问题的:

NSArray(contentsOfFile: path) 向下转换在归档应用程序中使用 swift 数组时很奇怪。有时它正常向下转换,有时它为同一个 plist 文件返回nill(文件没有变化)。我将所有与文件一起使用的[NSDictionary] 替换为NSArray?,现在效果很好。

该问题仅在应用商店应用程序 (.ipa) 中存档。如果我在模拟器或设备上运行它,它也适用于 swift 数组。

感谢@fluidsonic 关于选角的建议。

【讨论】:

    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多