DYLD,没有名称为 (@rpath/libswiftCore.dylib) 的缓存映像



我在 tvOS 12.2 上崩溃,其中包含以下详细信息:

Incident Identifier: 57DC9DA3-536C-438E-91A0-2A3BF5290302
CrashReporter Key:   336395bb8937c2da230441e7d0f77cf6ce5d29e2
Hardware Model:      AppleTV5,3
Process:             yospace-tvos-test [535]
Path:                /private/var/containers/Bundle/Application/8D86BE15-0069-48A0-A6CC-AF32ABCB718B/yospace-tvos-test.app/yospace-tvos-test
Identifier:          com.x..yospace-tvos-test
Version:             1 (1.0)
AppStoreTools:       11C504
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.x..yospace-tvos-test [856]

Date/Time:           2020-02-06 09:25:36.5008 +0000
Launch Time:         2020-02-06 09:25:36.2246 +0000
OS Version:          Apple TVOS 12.2 (16L5201d)
Baseband Version:    n/a
Report Version:      104
Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Termination Description: DYLD, no cache image with name (@rpath/libswiftCore.dylib)
Triggered by Thread:  0
Thread 0 Crashed:
0   dyld                            0x00000001009b63b8 __abort_with_payload + 8
1   dyld                            0x00000001009b59f8 abort_with_payload_wrapper_internal + 100
2   dyld                            0x00000001009b5a28 fcntl + 0
3   dyld                            0x00000001009788fc dyld::fastBindLazySymbol+ 18684 (ImageLoader**, unsigned long) + 0
4   dyld                            0x000000010097b6e8 dyld::_main+ 30440 (macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 5396
5   dyld                            0x0000000100975044 _dyld_start + 68
Thread 0 crashed with ARM Thread State (64-bit):
x0: 0x0000000000000006   x1: 0x0000000000000009   x2: 0x000000016f56a980   x3: 0x0000000000000014
x4: 0x000000016f56a580   x5: 0x0000000000000000   x6: 0x0000000000000000   x7: 0x0000000000000420
x8: 0x0000000000000020   x9: 0x0000000000000009  x10: 0x0000000000000001  x11: 0x0000000100a34000
x12: 0x0000000100a34000  x13: 0x0000000000000007  x14: 0x6172462f7070612e  x15: 0x00736b726f77656d
x16: 0x0000000000000209  x17: 0x0000000000000010  x18: 0x0000000000000000  x19: 0x0000000000000000
x20: 0x000000016f56a580  x21: 0x0000000000000014  x22: 0x000000016f56a980  x23: 0x0000000000000009
x24: 0x0000000000000006  x25: 0x000000000000002f  x26: 0x00000001009cf5e0  x27: 0x00000001009cf000
x28: 0x00000001009cfa00   fp: 0x000000016f56a550   lr: 0x00000001009b59f8
sp: 0x000000016f56a510   pc: 0x00000001009b63b8 cpsr: 0x40000000
EOF

如果我通过Xcode运行该应用程序,那很好,但是当我将其导出为IPA并将其安装在Apple TV上时,它会在启动过程中立即崩溃。它在 tvOS 13 和 iOS 11-13 上的 IPA 上运行良好。我猜这与 tvOS 13 中的 Swift ABI 稳定性有关,所以它不需要 13 的 Swift 库,但需要 12 的 Swift 库,即使我说过它应该始终嵌入 swift 标准库,它也很难找到它们,或者实际上根据崩溃日志末尾列出的二进制映像中缺少 Swift 库而包含它们(由于体长限制(。

Apple TV 的控制台报告以下内容:

尝试添加 ID 不足的应用,信息 { BKSApplicationStateAppIsFrontmost = 1; BKSApplicationStateExtensionKey = 0; SBApplicationStateDisplayIDKey = "com.x..哟空间-tvos-test"; SBApplicationStateKey = 8; SBApplicationStateProcessIDKey = 535; SBMostElevatedStateForProcessID = 8;}

该应用程序是用 ObjC 编写的并使用 Swift 框架的,这可能(也可能不是(相关的。

我看过很多关于libswiftCore没有加载的帖子,但是当与Xcode连接而不是从IPA安装时,就会发生这种情况。我没有运气找到任何有此崩溃消息的人,也没有运气找到"尝试添加ID不足的应用程序"消息(尽管人们似乎更频繁地遇到这种情况(。

我找到了解决此问题的方法。只需将一个虚拟 Swift 文件(其中包含一个虚拟类(添加到 ObjC 应用程序项目中即可解决问题。无需具有桥接标头,也无需在任何地方实际引用虚拟类。

它没有回答为什么会发生这种情况的问题,但也许 Xcode 中存在一个问题,这只会迫使它包含 Swift 标准库。

相关内容

  • 没有找到相关文章

最新更新