Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 未加载Xcode12 CoreNFC模拟器库_Ios_Swift_Ios14_Xcode12_Core Nfc - Fatal编程技术网

Ios 未加载Xcode12 CoreNFC模拟器库

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

我们的应用程序使用CoreNFC扫描NFC标签,如果不支持NFC,您也可以使用QR。这非常有效,我们能够在模拟器中运行应用程序进行(ui)测试。
直到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)
    放在
    import CoreNFC
    周围,它是底层的NFC代码
  • 清理生成文件夹并删除派生数据
  • 创建了一个空的Xcode12项目:,结果相同
  • 删除所有列出的模拟器并重新添加一个
  • 在其他链接器标志生成设置中添加了
    -弱\u框架“CoreNFC”
显然,通过注释掉代码部分和删除框架链接来删除对corefc框架的任何引用,会使崩溃消失。但这不是一个合适的选择


在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不允许在其菜单中使用“可选”链接
  • 我们必须转到“其他链接器标志”并添加:

-弱_框架 科伦菲克

在两行上

(案文如下: 其他\u LDFLAGS=-weak\u framework CoreNFC-lstdc++
)

谢谢你的建议,但不幸的是,我得到了同样的结果:@basvk删除所有模拟器并重新创建它们看起来这是苹果的一个次要问题@巴斯克:我认为你应该建立一个雷达。随时通知我们,以防你得到反馈,或者找到任何解决办法!是的,其他人提交了一个雷达:谢谢,这省去了下载Xcode的麻烦:看起来苹果开发者应该为此添加单元测试以避免将来:)拯救了我的一天。谢谢@ArifWorked完美地为我拯救了我的一天:)@arif