Xcode 15、iOS 17 - objc[3422]:类 _TtC6SQLite 在两者中实现...将使用两者之一。哪一个是未定义的

问题描述 投票:0回答:1

在我的应用程序中,我使用stephencelis/SQLite.swift

更新到 Xcode 15 并发布我的应用程序后,无需进行任何更改。超过 4000 名用户中有 2 名用户报告称他们无法在数据库中进行输入。数据库数据输入代码尚未更改,并且在所有测试设备和 iOS 系列以及其余用户上运行良好,但到目前为止有 2 位用户更新到了仅颜色更改的新应用程序版本;没有实际的代码更改无法添加到数据库,我无法调试原因。

唯一的区别是我使用 Xcode 15 来发布应用程序,并在运行代码时注意到一个新警告:

objc[3422]: Class _TtC6SQLite6Backup is implemented in both /System/Library/PrivateFrameworks/LinkServices.framework/LinkServices (0x1f1147048) and /private/var/containers/Bundle/Application/XX-XX-XX/App.app/Frameworks/SQLite.framework/SQLite (0x1063a1c70). One of the two will be used. Which one is undefined.
objc[3422]: Class _TtC6SQLite10Connection is implemented in both /System/Library/PrivateFrameworks/LinkServices.framework/LinkServices (0x1f03485f8) and /private/var/containers/Bundle/Application/XX-XX-XX/App.app/Frameworks/SQLite.framework/SQLite (0x1063a2228). One of the two will be used. Which one is undefined.
objc[3422]: Class _TtC6SQLite13DateFunctions is implemented in both /System/Library/PrivateFrameworks/LinkServices.framework/LinkServices (0x1f1146fb0) and /private/var/containers/Bundle/Application/XX-XX-XX/App.app/Frameworks/SQLite.framework/SQLite (0x1063a23d8). One of the two will be used. Which one is undefined.
objc[3422]: Class _TtC6SQLite12TableBuilder is implemented in both /System/Library/PrivateFrameworks/LinkServices.framework/LinkServices (0x1f1146e10) and /private/var/containers/Bundle/Application/XX-XX-XX/App.app/Frameworks/SQLite.framework/SQLite (0x1063a2fb8). One of the two will be used. Which one is undefined.
objc[3422]: Class _TtC6SQLite9Statement is implemented in both /System/Library/PrivateFrameworks/LinkServices.framework/LinkServices (0x1f03486c8) and /private/var/containers/Bundle/Application/XX-XX-XX/App.app/Frameworks/SQLite.framework/SQLite (0x1063a36c8). One of the two will be used. Which one is undefined.

这是我能看到的唯一区别,这是否会导致极少数用户出现问题?如果是这样,使用正确的库的正确修复是什么。除了使用新的 Xcode 15 发布应用程序之外,我没有进行任何更改。

swift sqlite frameworks xcode15 ios17
1个回答
0
投票

我为此创建了一个问题。自 iOS 17 以来,Apple 似乎在内部使用这个开源包,因此您将其嵌入到 2 个不同的二进制文件中(您的和 Apple 的)。解决这个问题的一种方法是 Apple 分叉这个库并更改模块的名称,这样就不会发生冲突,但这需要操作系统更新。要么他们这样做,要么你必须这样做。如果 Apple 使用具有不同 ABI 或已知错误的不同版本,这可能会导致运行时故障。

https://github.com/stephencelis/SQLite.swift/issues/1226

© www.soinside.com 2019 - 2024. All rights reserved.