我们已经迁移了一些CocoaPod依赖项,以便在Xcode 11中构建并与Swift Package Manager链接。然而,每当我们将应用程序提交到AppStore Connect并使用TestFlight进行分发时,应用程序在尝试从SPM链接的依赖项之一使用API时就会崩溃。其他构建(adhoc和开发(运行良好。一些SPM依赖项还链接了2个应用程序扩展。
有人遇到过这个问题吗?你知道问题是什么和/或如何解决吗?
正在附加崩溃的堆栈跟踪。这种情况发生在ObjectMapper
依赖关系中。
Exception Type: EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x00000000800000d0
Termination Signal: Illegal instruction: 4
Termination Reason: Namespace SIGNAL, Code 0x4
Terminating Process: exc handler [19562]
Triggered by Thread: 0
Thread 0 name:
Thread 0 Crashed:
0 OurAwesomeApp 0x0000000101693d14 nominal type descriptor for EnumTransform + 0
1 OurAwesomeApp 0x000000010108cda0 <- infix<A>(_:_:) + 612 (__hidden#1488_:38)
2 OurAwesomeApp 0x0000000101074434 <- infix<A>(_:_:) + 100 (__hidden#434_:36)
3 OurAwesomeApp 0x0000000100cad360 TWSplitParticipant.mapping(map:) + 1388 (DataClasses.swift:1211)
4 OurAwesomeApp 0x00000001010842cc Mapper.map(JSON:) + 1224 (__hidden#1191_:106)
5 OurAwesomeApp 0x0000000101087c70 _hidden#1144_ + 24 (__hidden#110_:0)
6 libswiftCore.dylib 0x000000018f3cd61c $sSTsE10compactMapySayqd__Gqd__Sg7ElementQzKXEKlF + 732 (SequenceAlgorithms.swift:807)
7 OurAwesomeApp 0x0000000101084a68 Mapper.mapArray(JSONArray:) + 212 (__hidden#1191_:166)
8 OurAwesomeApp 0x0000000101082a8c Mapper.mapArray(JSONObject:) + 192 (__hidden#1191_:156)
9 OurAwesomeApp 0x00000001010753d4 _hidden#461_ + 148 (__hidden#487_:92)
10 OurAwesomeApp 0x0000000101088c8c _hidden#1301_ + 196
11 OurAwesomeApp 0x0000000100cac720 TWSplitRequest.mapping(map:) + 812 (DataClasses.swift:1157)
12 OurAwesomeApp 0x00000001010842cc Mapper.map(JSON:) + 1224 (__hidden#1191_:106)
13 OurAwesomeApp 0x0000000101082988 Mapper.map(JSONObject:) + 160 (__hidden#1191_:89)
14 OurAwesomeApp 0x00000001010752f0 _hidden#459_ + 644 (__hidden#487_:66)
15 OurAwesomeApp 0x000000010108896c <- infix<A>(_:_:) + 152 (__hidden#1307_:116)
16 OurAwesomeApp 0x0000000100ca7248 TWInvoice.mapping(map:) + 4000 (DataClasses.swift:377)
17 OurAwesomeApp 0x00000001010842cc Mapper.map(JSON:) + 1224 (__hidden#1191_:106)
18 OurAwesomeApp 0x0000000101087c70 _hidden#1144_ + 24 (__hidden#110_:0)
19 libswiftCore.dylib 0x000000018f3cd61c $sSTsE10compactMapySayqd__Gqd__Sg7ElementQzKXEKlF + 732 (SequenceAlgorithms.swift:807)
20 OurAwesomeApp 0x0000000101084a68 Mapper.mapArray(JSONArray:) + 212 (__hidden#1191_:166)
21 OurAwesomeApp 0x0000000101082a8c Mapper.mapArray(JSONObject:) + 192 (__hidden#1191_:156)
22 OurAwesomeApp 0x00000001010753d4 _hidden#461_ + 148 (__hidden#487_:92)
23 OurAwesomeApp 0x0000000101088c8c _hidden#1301_ + 196
24 OurAwesomeApp 0x0000000100ca5b88 TWInvoicesByType.mapping(map:) + 328 (DataClasses.swift:266)
25 OurAwesomeApp 0x00000001010842cc Mapper.map(JSON:) + 1224 (__hidden#1191_:106)
26 OurAwesomeApp 0x0000000101082988 Mapper.map(JSONObject:) + 160 (__hidden#1191_:89)
27 OurAwesomeApp 0x00000001010752f0 _hidden#459_ + 644 (__hidden#487_:66)
28 OurAwesomeApp 0x000000010108896c <- infix<A>(_:_:) + 152 (__hidden#1307_:116)
29 OurAwesomeApp 0x0000000100ca3adc TWAccount.mapping(map:) + 104 (DataClasses.swift:81)
30 OurAwesomeApp 0x00000001010842cc Mapper.map(JSON:) + 1224 (__hidden#1191_:106)
31 OurAwesomeApp 0x0000000101082988 Mapper.map(JSONObject:) + 160 (__hidden#1191_:89)
32 OurAwesomeApp 0x0000000100c47c18 closure #1 in DataServer.getAccountInfo(_:) + 492 (DataServer.swift:949)
33 OurAwesomeApp 0x00000001011d7888 _hidden#2846_ + 164
34 OurAwesomeApp 0x00000001011db76c _hidden#2893_ + 52 (__hidden#578_:0)
35 OurAwesomeApp 0x00000001011b55e0 _hidden#996_ + 28 (__hidden#578_:0)
36 libdispatch.dylib 0x0000000181e29610 _dispatch_call_block_and_release + 24 (init.c:1408)
37 libdispatch.dylib 0x0000000181e2a184 _dispatch_client_callout + 16 (object.m:495)
38 libdispatch.dylib 0x0000000181e0d35c _dispatch_main_queue_callback_4CF$VARIANT$armv81 + 996 (inline_internal.h:2487)
39 CoreFoundation 0x00000001820da3c4 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12 (CFRunLoop.c:1749)
40 CoreFoundation 0x00000001820d53b8 __CFRunLoopRun + 2004 (CFRunLoop.c:3069)
41 CoreFoundation 0x00000001820d48bc CFRunLoopRunSpecific + 464 (CFRunLoop.c:3192)
42 GraphicsServices 0x000000018bf40328 GSEventRunModal + 104 (GSEvent.c:2246)
43 UIKitCore 0x000000018616a6d4 UIApplicationMain + 1936 (UIApplication.m:4753)
44 OurAwesomeApp 0x0000000100c1048c main + 68 (OurAwesomeFactoryFactory.swift:25)
45 libdyld.dylib 0x0000000181f5f460 start + 4
2019-11-27更新
在相关的Swift bug帖子中,有人找到了一个变通方法:
在我们的应用程序目标中设置DEAD_CODE_STRIPPING=NO可以修复崩溃。
原始帖子
首先,这是SPM的编译问题。只需回滚到CocoaPods即可。
直到Xcode 11.2.1,苹果还没有解决这个问题。
删除所有派生文件,清理项目。然后尝试使用release
配置运行您的项目。现在,您应该能够重现崩溃。
我在一个iOS项目中使用了两个名为Moya
和Parchment
的库,Swift Package Manager是从CocoaPods迁移过来的。从TestFlight下载的应用程序在执行引用这两个库的逻辑时崩溃。
崩溃日志看起来完全是胡说八道,指出了方法描述符的内存对齐问题。
苹果在Xcode发布说明中提到了一个已知的问题,我不知道它是否相关:
如果iOS、tvOS或watchOS应用程序使用构建动态库的Swift Package,则无法将其提交到应用商店。(55564324(
解决方法:修改包清单以构建静态库。