iOS application crashes after AppStore publication

2019-08-22 03:37发布

Application works good when I run it with XCode. I tried my iOS 7, iOS 8 devices and simulators. I published application into App Store and after update it crashes at the launchscreen. I also tried to upload application into pre-release into TestFlight application and it crashes at launchscreen too. Could you help to debug it?

Crashlog:

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

I use Swift, XCode 6, deployment target iOS7+

Update:

Method code:

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)
}

Update 3

I found that if I add sleep after file reading it works ok. Thats really weird.

Without sleep:

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()
}

output

Path Exists

self.menuItems is nil

With sleep:

 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()
}

output:

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

self.menuItems is NOT nil, BEFORE and AFTER sleep! o_O

2条回答
成全新的幸福
2楼-- · 2019-08-22 04:19

I guess the problem lies with build settings, if you use swift in your project it seems that you should switch the flag in build settings "Embedded Content Contains Swift Code" from NO to YES.

I had tried to google more info about this flag and I found some info on apple developer portal:

When building an application that does not contain Swift source files but embeds other content (like frameworks, XPC services, app extensions, and so on) that does contain Swift code, you must set the build setting Embedded Content Contains Swift Code (EMBEDDED_CONTENT_CONTAINS_SWIFT). That way the Swift libraries will be included in the application. (17757566)

Also I came across with this article that looks like your problem: breefield.com/essays/critical-app-review

查看更多
地球回转人心会变
3楼-- · 2019-08-22 04:29

How I resolved the issue:

NSArray(contentsOfFile: path) downcasting worked weird with swift arrays in archived app. Sometimes it downcasted normally, sometimes it returned nill for the same plist file (no changes in file). I replaced all my [NSDictionary] that worked with files into NSArray? and it works good now.

The issue was only in archived for app store application (.ipa). If I run it on simulator or on the device, it works good with swift arrays too.

Thanks for @fluidsonic for advice about casting.

查看更多
登录 后发表回答