Ios 未加载Xcode12 CoreNFC模拟器库
我们的应用程序使用CoreNFC扫描NFC标签,如果不支持NFC,您也可以使用QR。这非常有效,我们能够在模拟器中运行应用程序进行(ui)测试。Ios 未加载Xcode12 CoreNFC模拟器库,ios,swift,ios14,xcode12,core-nfc,Ios,Swift,Ios14,Xcode12,Core Nfc,我们的应用程序使用CoreNFC扫描NFC标签,如果不支持NFC,您也可以使用QR。这非常有效,我们能够在模拟器中运行应用程序进行(ui)测试。 直到Xcode12/iOS14 GM构建。在iOS13(或更低版本)中,在模拟器上运行它不会有任何问题 但在iOS14模拟器iPhone11上运行Xcode12时,我们会得到以下结果: dyld: launch, loading dependent libraries DYLD_SHARED_CACHE_DIR=/Users/xxx/Library/D
直到Xcode12/iOS14 GM构建。在iOS13(或更低版本)中,在模拟器上运行它不会有任何问题 但在iOS14模拟器iPhone11上运行Xcode12时,我们会得到以下结果:
dyld: launch, loading dependent libraries
DYLD_SHARED_CACHE_DIR=/Users/xxx/Library/Developer/CoreSimulator/Caches/dyld/19G73/com.apple.CoreSimulator.SimRuntime.iOS-14-0.18A372
DYLD_ROOT_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot
DYLD_LIBRARY_PATH=/Users/xxx/Library/Developer/Xcode/DerivedData/xxx-awnlestrbvesqqbynrhmluzhbcsc/Build/Products/Debug-iphonesimulator:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/introspection
DYLD_INSERT_LIBRARIES=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libBacktraceRecording.dylib:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSi
dyld: Library not loaded: /usr/lib/libnfshared.dylib
Referenced from: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/CoreNFC.framework/CoreNFC
Reason: no suitable image found. Did find:
/usr/lib/libnfshared.dylib: mach-o, but not built for platform iOS-sim
模拟器崩溃对我来说是有意义的,因为模拟器不能扫描NFC标签,但这就是我所做的:
- 我已经链接到CoreNFC框架,并将其设置为可选,如下所述:
- 将
放在#if canImport(CoreNFC)
周围,它是底层的NFC代码import CoreNFC
- 清理生成文件夹并删除派生数据
- 创建了一个空的Xcode12项目:,结果相同
- 删除所有列出的模拟器并重新添加一个
- 在其他链接器标志生成设置中添加了
-弱\u框架“CoreNFC”
在iOS13模拟器“设备”上从Xcode12运行它可以完美工作。因此,我似乎无法找出导致这种行为的原因链接器说libnfshared(mach-o)文件不包含模拟器的二进制文件,这很奇怪,因为它是苹果核心框架 使用Xcode 12创建一个新项目并导入NFC框架。构建它并在模拟器上运行它。如果它没有崩溃,那么在这些项目之间比较专门针对DYLD的构建设置 如果这没有帮助,请删除所有模拟器并重新创建新的模拟器 更新:
#if canImport(CoreNFC)
import CoreNFC
...
这是IOS 14中的漏洞,有人提交了一个雷达:苹果显然忘记了在IOS 14模拟器的最终版本Xcode 12中添加
libnfshared.dylib
。在苹果修复此问题之前,一个可行的解决办法是从Xcode 12 beta 6复制缺失的lib(从苹果的开发者下载部分下载beta)。缺少的lib可以在这里找到,并且必须进入最终Xcode 12的同一目录:
Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib
我的应用程序也有同样的问题,尽管我没有使用corefc框架。这个问题可以通过
Xcode-12.2测试版2。于2020年9月29日发布
苹果显然忘记了在iOS 14模拟器的Xcode 12最终版本中添加libnfshared.dylib,无论出于何种原因。在苹果修复此问题之前,一个可行的解决办法是从Xcode 12 beta 6复制缺失的lib(从苹果的开发者下载部分下载beta)。缺少的lib可以在这里找到,并且必须进入最终Xcode 12的同一目录
这对我有用 稍后会有一点,但可能对其他人有用 情景:
- 应用程序必须使用NFC(如果可用)
- 还必须在NFC之前的设备上工作(即带iOS12的iPhone 6)
- 为iOS12构建
#if canImport(CoreNFC)
import CoreNFC
...
而不是旧的:
@available(iOS 11.0, *) .. and similar..
注意事项:
#if canImport(CoreNFC)
import CoreNFC
...
“canImport”在编译时工作,因此如果要解决:
“dyld:未加载库:/System/Library/Frameworks/CoreNFC.framework/CoreNFC
引用自:/var/。。。
原因:未找到图像”消息
我们必须注意链接部分
链接部分:
#if canImport(CoreNFC)
import CoreNFC
...
- Xcode 12.5不允许在其菜单中使用“可选”链接
- 我们必须转到“其他链接器标志”并添加:
)谢谢你的建议,但不幸的是,我得到了同样的结果:@basvk删除所有模拟器并重新创建它们看起来这是苹果的一个次要问题@巴斯克:我认为你应该建立一个雷达。随时通知我们,以防你得到反馈,或者找到任何解决办法!是的,其他人提交了一个雷达:谢谢,这省去了下载Xcode的麻烦:看起来苹果开发者应该为此添加单元测试以避免将来:)拯救了我的一天。谢谢@ArifWorked完美地为我拯救了我的一天:)@arif