苹果因崩溃而拒绝App,无法重现



大家好,提前感谢您的任何提示/帮助。

我真的需要一些来自苹果的崩溃日志的帮助,这在上周一直困扰着我,我发送了 4 个版本(使用 xCode 11.1 构建(,每次我都得到相同的答案:

指南 2.1 - 性能 - 应用完整性

当我们使用Facebook帐户登录时,您的应用程序在WiFi上运行iOS 13.5的iPad上崩溃。

重现崩溃的步骤:

  1. 启动应用程序
  2. 选择"使用脸书登录">
  3. 接受最终用户许可协议
  4. 在脸书登录屏幕中点击"继续">
  5. 应用崩溃

起初,我能够重现崩溃,这是使用与Apple相同的操作系统版本在我的真实设备上发生的xCode崩溃:

https://i.stack.imgur.com/Pi3cq.jpg

然后有人建议使用 swift 编译器优化来解决 AlamoFire Pod 问题,我应该将 Swift 编译器优化设置为无优化(事先是速度优化(。当我这样做时,它实际上解决了这个问题,并在多个真实设备上对其进行了测试。每次我将其设置为优化速度时,它都会以与 Apple 报告相同的方式崩溃,每次我将其设置为 none 时,它都会顺利运行,所以我在发布配置上发送了带有无优化的版本以供审查,令我惊讶的是,他们给了我相同的答案和相同的崩溃日志。

这是苹果的崩溃日志

{"app_name":"myApp","timestamp":"2020-06-29 10:04:19.00 -0700","app_version":"1.3.4","slice_uuid":"1b3cb360-baf6-3d14-922f-9a232b3e5d9f","adam_id":1463189126,"build_version":"1.3","bundleID":"com.myApp","share_with_app_devs":0,"is_first_party":0,"bug_type":"109","os_version":"iPhone OS 13.5 (17F75)","incident_id":"C410440D-AA9F-4DB7-9C34-972588AC0651","name":"myApp"}
Incident Identifier: C410440D-AA9F-4DB7-9C34-972588AC0651
CrashReporter Key:   7e4f06e26c34abc3889f779184ac47940952c29e
Hardware Model:      xxx
Process:             myApp [5131]
Path:                /private/var/containers/Bundle/Application/1ACDDEDC-CD75-4F61-9935-42E0D16E6329/myApp.app/myApp
Identifier:          com.myApp
Version:             1.3 (1.3.4)
AppStoreTools:       11E608a
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.myApp [2138]

Date/Time:           2020-06-29 10:04:19.5937 -0700
Launch Time:         2020-06-29 10:01:43.7505 -0700
OS Version:          iPhone OS 13.5 (17F75)
Release Type:        User
Baseband Version:    n/a
Report Version:      104
Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  0
Last Exception Backtrace:
0   CoreFoundation                  0x18a0ff794 0x189fd5000 + 1222548
1   libobjc.A.dylib                 0x189e21bcc 0x189e1c000 + 23500
2   CoreFoundation                  0x18a1552dc 0x189fd5000 + 1573596
3   CoreFoundation                  0x18a12b090 0x189fd5000 + 1400976
4   CoreFoundation                  0x18a12b758 0x189fd5000 + 1402712
5   CoreFoundation                  0x18a12b458 0x189fd5000 + 1401944
6   CoreFoundation                  0x18a12b80c 0x189fd5000 + 1402892
7   CoreFoundation                  0x189fdc894 0x189fd5000 + 30868
8   CoreFoundation                  0x18a133840 0x189fd5000 + 1435712
9   CoreFoundation                  0x18a068d24 0x189fd5000 + 605476
10  CoreFoundation                  0x18a0685b8 0x189fd5000 + 603576
11  CoreFoundation                  0x189fd92b8 0x189fd5000 + 17080
12  CoreFoundation                  0x189fdc2f4 0x189fd5000 + 29428
13  CoreFoundation                  0x18a1369d8 0x189fd5000 + 1448408
14  Foundation                      0x18a3fa818 0x18a3b3000 + 292888
15  myApp                       0x1050895c4 static Helper.savePurchasedPlan(data:) + 1463748 (Helper.swift:193)
16  myApp                       0x1055d255c SocialLogin.storeToken(responseData:) + 7005532 (SocialLogin.swift:100)
17  myApp                       0x1055d2e74 closure #1 in SocialLogin.facebookLoginAPI(data:) + 7007860 (SocialLogin.swift:144)
18  myApp                       0x105140798 thunk for @escaping @callee_guaranteed (@guaranteed ResponseModel) -> () + 2213784 (<compiler-generated>:0)
19  RxSwift                         0x1084abb64 closure #1 in ObservableType.subscribe(onNext:onError:onCompleted:onDisposed:) + 342884 (ObservableType+Extensions.swift:65)
20  RxSwift                         0x1084abd64 partial apply for closure #1 in ObservableType.subscribe(onNext:onError:onCompleted:onDisposed:) + 343396 (<compiler-generated>:0)
21  RxSwift                         0x108460e04 AnonymousObserver.onCore(_:) + 36356 (AnonymousObserver.swift:24)
22  RxSwift                         0x1084ae5c0 ObserverBase.on(_:) + 353728 (ObserverBase.swift:18)
23  RxSwift                         0x1084ae77c protocol witness for ObserverType.on(_:) in conformance ObserverBase<A> + 354172 (<compiler-generated>:0)
24  RxSwift                         0x1084aeb8c partial apply + 355212 (<compiler-generated>:0)
25  RxSwift                         0x1084c8898 thunk for @escaping @callee_guaranteed (@in_guaranteed Event<A>) -> () + 460952 (<compiler-generated>:0)
26  RxSwift                         0x1084b4ed4 PublishSubject.on(_:) + 380628 (Bag+Rx.swift:14)
27  RxSwift                         0x1084b6104 protocol witness for ObserverType.on(_:) in conformance PublishSubject<A> + 385284 (<compiler-generated>:0)
28  RxSwift                         0x1084ae920 ObserverType.onNext(_:) + 354592 (ObserverType.swift:27)
29  myApp                       0x1057acedc closure #1 in Authentication.requestAPI(requestData:apiName:) + 8949468 (Authentication.swift:149)
30  myApp                       0x1057ab510 thunk for @escaping @callee_guaranteed (@guaranteed NSHTTPURLResponse, @in_guaranteed Any) -> () + 8942864 (<compiler-generated>:0)
31  RxSwift                         0x1084abb64 closure #1 in ObservableType.subscribe(onNext:onError:onCompleted:onDisposed:) + 342884 (ObservableType+Extensions.swift:65)
32  RxSwift                         0x1084abd64 partial apply for closure #1 in ObservableType.subscribe(onNext:onError:onCompleted:onDisposed:) + 343396 (<compiler-generated>:0)
33  RxSwift                         0x108460e04 AnonymousObserver.onCore(_:) + 36356 (AnonymousObserver.swift:24)
34  RxSwift                         0x1084ae5c0 ObserverBase.on(_:) + 353728 (ObserverBase.swift:18)
35  RxSwift                         0x1084ae77c protocol witness for ObserverType.on(_:) in conformance ObserverBase<A> + 354172 (<compiler-generated>:0)
36  RxSwift                         0x1084ce4ec Sink.forwardOn(_:) + 484588 (Sink.swift:34)
37  RxSwift                         0x10848c6b8 DebugSink.on(_:) + 214712 (Debug.swift:61)
38  RxSwift                         0x10848c81c protocol witness for ObserverType.on(_:) in conformance DebugSink<A, B> + 215068 (<compiler-generated>:0)
39  RxSwift                         0x1084ce4ec Sink.forwardOn(_:) + 484588 (Sink.swift:34)
40  RxSwift                         0x1084a6ee8 MergeSinkIter.on(_:) + 323304 (Merge.swift:394)
41  RxSwift                         0x1084a706c protocol witness for ObserverType.on(_:) in conformance MergeSinkIter<A, B, C> + 323692 (<compiler-generated>:0)
42  RxSwift                         0x1084ce4ec Sink.forwardOn(_:) + 484588 (Sink.swift:34)
43  RxSwift                         0x10848929c AnonymousObservableSink.on(_:) + 201372 (Create.swift:50)
44  RxSwift                         0x1084894b0 protocol witness for ObserverType.on(_:) in conformance AnonymousObservableSink<A> + 201904 (<compiler-generated>:0)
45  RxSwift                         0x1084aeb8c partial apply + 355212 (<compiler-generated>:0)
46  RxSwift                         0x108460f00 AnyObserver.on(_:) + 36608 (AnyObserver.swift:39)
47  RxAlamofire                     0x10820191c partial apply for specialized + 71964 (<compiler-generated>:0)
48  Alamofire                       0x10791fa80 closure #1 in closure #1 in DataRequest.response<A>(queue:responseSerializer:completionHandler:) + 211584 (ResponseSerialization.swift:167)
49  Alamofire                       0x107903074 thunk for @escaping @callee_guaranteed () -> () + 94324 (<compiler-generated>:0)
50  libdispatch.dylib               0x189dc49a8 0x189d6a000 + 371112
51  libdispatch.dylib               0x189dc5524 0x189d6a000 + 374052
52  libdispatch.dylib               0x189d775b4 0x189d6a000 + 54708
53  CoreFoundation                  0x18a07d7fc 0x189fd5000 + 690172
54  CoreFoundation                  0x18a0786d0 0x189fd5000 + 669392
55  CoreFoundation                  0x18a077ce8 0x189fd5000 + 666856
56  GraphicsServices                0x1941c238c 0x1941bf000 + 13196
57  UIKitCore                       0x18e1a6444 0x18d778000 + 10675268
58  myApp                       0x104f44164 main + 131428 (AppDelegate.swift:39)
59  libdyld.dylib                   0x189eff8f0 0x189efe000 + 6384

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x0000000189ef4d88 0x189ecf000 + 155016
1   libsystem_pthread.dylib         0x0000000189e0d1e8 0x189e0b000 + 8680
2   libsystem_c.dylib               0x0000000189d609b0 0x189cee000 + 469424
3   libsystem_c.dylib               0x0000000189d60940 0x189cee000 + 469312
4   libc++abi.dylib                 0x0000000189ec8cc0 0x189eb6000 + 76992
5   libc++abi.dylib                 0x0000000189ebae10 0x189eb6000 + 19984
6   libobjc.A.dylib                 0x0000000189e21e80 0x189e1c000 + 24192
7   myApp                       0x000000010595c0f4 CLSTerminateHandler+ 10715380 () + 344
8   libc++abi.dylib                 0x0000000189ec814c 0x189eb6000 + 74060
9   libc++abi.dylib                 0x0000000189ec80e4 0x189eb6000 + 73956
10  libdispatch.dylib               0x0000000189dc5538 0x189d6a000 + 374072
11  libdispatch.dylib               0x0000000189d775b4 0x189d6a000 + 54708
12  CoreFoundation                  0x000000018a07d7fc 0x189fd5000 + 690172
13  CoreFoundation                  0x000000018a0786d0 0x189fd5000 + 669392
14  CoreFoundation                  0x000000018a077ce8 0x189fd5000 + 666856
15  GraphicsServices                0x00000001941c238c 0x1941bf000 + 13196
16  UIKitCore                       0x000000018e1a6444 0x18d778000 + 10675268
17  myApp                       0x0000000104f44164 main + 131428 (AppDelegate.swift:39)
18  libdyld.dylib                   0x0000000189eff8f0 0x189efe000 + 6384
Thread 1 name:  Dispatch queue: com.apple.libtrace.state.block-list
Thread 1:
0   libsystem_kernel.dylib          0x0000000189ef577c 0x189ecf000 + 157564
1   libdispatch.dylib               0x0000000189d6c0a8 0x189d6a000 + 8360
2   libdispatch.dylib               0x0000000189d6be84 0x189d6a000 + 7812
3   libdispatch.dylib               0x0000000189d7834c 0x189d6a000 + 58188
4   libdispatch.dylib               0x0000000189d77f6c 0x189d6a000 + 57196
5   libsystem_trace.dylib           0x0000000189cb6ab0 0x189ca4000 + 76464
6   libdispatch.dylib               0x0000000189dc49a8 0x189d6a000 + 371112
7   libdispatch.dylib               0x0000000189dc5524 0x189d6a000 + 374052
8   libdispatch.dylib               0x0000000189d718a4 0x189d6a000 + 30884
9   libdispatch.dylib               0x0000000189d722c4 0x189d6a000 + 33476
10  libdispatch.dylib               0x0000000189d7b78c 0x189d6a000 + 71564
11  libsystem_pthread.dylib         0x0000000189e16b74 0x189e0b000 + 47988
12  libsystem_pthread.dylib         0x0000000189e19740 0x189e0b000 + 59200
Thread 2 name:  com.apple.uikit.eventfetch-thread
Thread 2:
0   libsystem_kernel.dylib          0x0000000189ed3198 0x189ecf000 + 16792
1   libsystem_kernel.dylib          0x0000000189ed260c 0x189ecf000 + 13836
2   CoreFoundation                  0x000000018a07d468 0x189fd5000 + 689256
3   CoreFoundation                  0x000000018a07849c 0x189fd5000 + 668828
4   CoreFoundation                  0x000000018a077ce8 0x189fd5000 + 666856
5   Foundation                      0x000000018a3bb01c 0x18a3b3000 + 32796
6   Foundation                      0x000000018a3baefc 0x18a3b3000 + 32508
7   UIKitCore                       0x000000018e2495dc 0x18d778000 + 11343324
8   Foundation                      0x000000018a4e9e20 0x18a3b3000 + 1273376
9   libsystem_pthread.dylib         0x0000000189e15d98 0x189e0b000 + 44440
10  libsystem_pthread.dylib         0x0000000189e1974c 0x189e0b000 + 59212
Thread 3 name:  JavaScriptCore bmalloc scavenger
Thread 3:
0   libsystem_kernel.dylib          0x0000000189ef4b58 0x189ecf000 + 154456
1   libsystem_pthread.dylib         0x0000000189e0ece4 0x189e0b000 + 15588
2   libc++.1.dylib                  0x0000000189f467ac 0x189f3a000 + 51116
3   JavaScriptCore                  0x0000000198feaab8 0x198f61000 + 563896
4   JavaScriptCore                  0x0000000198fee790 0x198f61000 + 579472
5   JavaScriptCore                  0x0000000198fee4a0 0x198f61000 + 578720
6   JavaScriptCore                  0x0000000198fef6e4 0x198f61000 + 583396
7   libsystem_pthread.dylib         0x0000000189e15d98 0x189e0b000 + 44440
8   libsystem_pthread.dylib         0x0000000189e1974c 0x189e0b000 + 59212
Thread 4 name:  com.twitter.crashlytics.ios.MachExceptionServer
Thread 4:
0   libsystem_kernel.dylib          0x0000000189ed3198 0x189ecf000 + 16792
1   libsystem_kernel.dylib          0x0000000189ed260c 0x189ecf000 + 13836
2   myApp                       0x0000000105949374 CLSMachExceptionServer + 100
3   libsystem_pthread.dylib         0x0000000189e15d98 0x189e0b000 + 44440
4   libsystem_pthread.dylib         0x0000000189e1974c 0x189e0b000 + 59212
Thread 5 name:  com.apple.NSURLConnectionLoader
Thread 5:
0   libsystem_kernel.dylib          0x0000000189ed3198 0x189ecf000 + 16792
1   libsystem_kernel.dylib          0x0000000189ed260c 0x189ecf000 + 13836
2   CoreFoundation                  0x000000018a07d468 0x189fd5000 + 689256
3   CoreFoundation                  0x000000018a07849c 0x189fd5000 + 668828
4   CoreFoundation                  0x000000018a077ce8 0x189fd5000 + 666856
5   CFNetwork                       0x000000018d338894 0x18d337000 + 6292
6   Foundation                      0x000000018a4e9e20 0x18a3b3000 + 1273376
7   libsystem_pthread.dylib         0x0000000189e15d98 0x189e0b000 + 44440
8   libsystem_pthread.dylib         0x0000000189e1974c 0x189e0b000 + 59212
Thread 6 name:  WebThread
Thread 6:
0   libsystem_kernel.dylib          0x0000000189ed3198 0x189ecf000 + 16792
1   libsystem_kernel.dylib          0x0000000189ed260c 0x189ecf000 + 13836
2   CoreFoundation                  0x000000018a07d468 0x189fd5000 + 689256
3   CoreFoundation                  0x000000018a07849c 0x189fd5000 + 668828
4   CoreFoundation                  0x000000018a077ce8 0x189fd5000 + 666856
5   WebCore                         0x00000001925f2ac0 0x191c49000 + 10132160
6   libsystem_pthread.dylib         0x0000000189e15d98 0x189e0b000 + 44440
7   libsystem_pthread.dylib         0x0000000189e1974c 0x189e0b000 + 59212
Thread 7 name:  AVAudioSession Notify Thread
Thread 7:
0   libsystem_kernel.dylib          0x0000000189ed3198 0x189ecf000 + 16792
1   libsystem_kernel.dylib          0x0000000189ed260c 0x189ecf000 + 13836
2   CoreFoundation                  0x000000018a07d468 0x189fd5000 + 689256
3   CoreFoundation                  0x000000018a07849c 0x189fd5000 + 668828
4   CoreFoundation                  0x000000018a077ce8 0x189fd5000 + 666856
5   AVFAudio                        0x0000000196e21a2c 0x196dbc000 + 416300
6   AVFAudio                        0x0000000196e727a0 0x196dbc000 + 747424
7   libsystem_pthread.dylib         0x0000000189e15d98 0x189e0b000 + 44440
8   libsystem_pthread.dylib         0x0000000189e1974c 0x189e0b000 + 59212
Thread 8 name:  LocalStorage
Thread 8:
0   libsystem_kernel.dylib          0x0000000189ef4b58 0x189ecf000 + 154456
1   libsystem_pthread.dylib         0x0000000189e0ece4 0x189e0b000 + 15588
2   JavaScriptCore                  0x0000000198faf5fc 0x198f61000 + 321020
3   JavaScriptCore                  0x0000000198f9460c 0x198f61000 + 210444
4   WebKitLegacy                    0x00000001961f6dbc 0x1961c7000 + 196028
5   WebKitLegacy                    0x00000001961f9ff4 0x1961c7000 + 208884
6   WebKitLegacy                    0x00000001961f9550 0x1961c7000 + 206160
7   JavaScriptCore                  0x0000000198facc88 0x198f61000 + 310408
8   JavaScriptCore                  0x0000000198faedc4 0x198f61000 + 318916
9   libsystem_pthread.dylib         0x0000000189e15d98 0x189e0b000 + 44440
10  libsystem_pthread.dylib         0x0000000189e1974c 0x189e0b000 + 59212
Thread 9 name:  com.apple.CFNetwork.CustomProtocols
Thread 9:
0   libsystem_kernel.dylib          0x0000000189ed3198 0x189ecf000 + 16792
1   libsystem_kernel.dylib          0x0000000189ed260c 0x189ecf000 + 13836
2   CoreFoundation                  0x000000018a07d468 0x189fd5000 + 689256
3   CoreFoundation                  0x000000018a07849c 0x189fd5000 + 668828
4   CoreFoundation                  0x000000018a077ce8 0x189fd5000 + 666856
5   CFNetwork                       0x000000018d338894 0x18d337000 + 6292
6   Foundation                      0x000000018a4e9e20 0x18a3b3000 + 1273376
7   libsystem_pthread.dylib         0x0000000189e15d98 0x189e0b000 + 44440
8   libsystem_pthread.dylib         0x0000000189e1974c 0x189e0b000 + 59212
Thread 10:
0   libsystem_pthread.dylib         0x0000000189e19738 0x189e0b000 + 59192
Thread 11:
0   libsystem_pthread.dylib         0x0000000189e19738 0x189e0b000 + 59192
Thread 12:
0   libsystem_pthread.dylib         0x0000000189e19738 0x189e0b000 + 59192
Thread 13:
0   libsystem_pthread.dylib         0x0000000189e19738 0x189e0b000 + 59192
Thread 0 crashed with ARM Thread State (64-bit):
x0: 0x0000000000000000   x1: 0x0000000000000000   x2: 0x0000000000000000   x3: 0x0000000000000000
x4: 0x0000000000000000   x5: 0x0000000000989680   x6: 0x000000000000006e   x7: 0xffffffffffffffec
x8: 0x000000010755d840   x9: 0x141b95868448e1e7  x10: 0x00000000000003e8  x11: 0x000000000000000b
x12: 0x00000001c3b66080  x13: 0x0000000000000001  x14: 0x0000000000000010  x15: 0x0000000000000004
x16: 0x0000000000000148  x17: 0x0000000000000000  x18: 0x0000000000000000  x19: 0x0000000000000006
x20: 0x0000000000000407  x21: 0x000000016aeda5e0  x22: 0x000000010755d920  x23: 0x0000000000000000
x24: 0x0000000000000114  x25: 0x0000000283ae68c0  x26: 0x000000010755d920  x27: 0x00000000000020ff
x28: 0x0000000002ffffff   fp: 0x000000016aeda500   lr: 0x0000000189e0d1e8
sp: 0x000000016aeda4e0   pc: 0x0000000189ef4d88 cpsr: 0x40000000
esr: 0x56000080  Address size fault

这也是助手.swift第 193 行:

class func savePurchasedPlan(data:[String:Any]){
UserDefaults.standard.setValue(data, forKey: "purchaseDetails") .
UserDefaults.standard.synchronize()
}

第 193 行是:UserDefaults.standard.setValue(data, forKey: "purchaseDetails"( 。

不要直接保存 [String:Any]。UserDefaults 只能处理 Int 和 String 等基本类型。如果要保存这样的结构,请为其创建一个对象(如购买计划(,并使该对象为NSObject和NSCoding,之后可以对该对象进行编码和解码。

我的一个项目的例子:

import Foundation
class User: NSObject, NSCoding {

let userId: Int
let accessToken: String

init?(WithValues values: NSDictionary) {
guard let accessTokenValue = values.value(forKey: "accessToken") as? String else {
return nil
}

guard accessTokenValue.count > 0 else {
return nil
}

guard let userDictionary = values.value(forKey: "user") as? NSDictionary else {
return nil
}

guard let userIdValue = userDictionary.value(forKey: "id") as? Int else {
return nil
}

self.accessToken = accessTokenValue
self.userId = userIdValue
}

init(WithUserId userId: Int, AccessToken accessToken: String) {
self.userId = userId
self.accessToken = accessToken
}

required convenience init(coder aCoder: NSCoder) {
let userId = aCoder.decodeInteger(forKey: "userId")
let accessToken = aCoder.decodeObject(forKey: "accessToken") as? String ?? ""
self.init(WithUserId: userId, AccessToken: accessToken)
}

func encode(with acoder: NSCoder) {
acoder.encode(userId,forKey: "userId")
acoder.encode(accessToken,forKey: "accessToken")
}

}

用法:

//Saving
let encoded = NSKeyedArchiver.archivedData(withRootObject: user)
UserDefaults.standard.set(encoded, forKey: "user")
//Loading
if let decoded = UserDefaults.standard.object(forKey: "user") as? Data {
NSKeyedUnarchiver.setClass(User.self, forClassName: "YourTarget.User")

if let user = NSKeyedUnarchiver.unarchiveObject(with: decoded) as? User {
_user = user
} else {
_user = nil
//Decoded data is invalid, reset
UserDefaults.standard.set(nil, forKey: "user")
}
} else {
_user = nil
}

最新更新