bas*_*svk 45 ios swift core-nfc ios14 xcode12
我们的应用程序使用 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
Run Code Online (Sandbox Code Playgroud)
模拟器崩溃对我来说很有意义,因为模拟器无法扫描 NFC 标签,但这就是我所做的:
#if canImport(CoreNFC)周围import CoreNFC,它是底层的 NFC 代码。-weak_framework "CoreNFC"到其他链接器标志构建设置显然,通过注释掉代码部分和删除框架链接来删除对 CoreNFC 框架的任何引用,会使崩溃消失。但这不是一个合适的选择。
在 iOS13 模拟器“设备”上从 Xcode12 运行它可以完美运行。所以我似乎无法弄清楚是什么导致了这种行为
Ari*_*bas 43
无论出于何种原因,Apple 显然忘记在 iOS 14 模拟器的 Xcode 12 最终版本中添加 libnfshared.dylib。在 Apple 修复此问题之前,一个可行的解决方法是从 Xcode 12 beta 6 复制丢失的 lib(从 Apple 的开发人员下载部分下载 beta)。可以在此处找到丢失的库,并且必须进入最终 Xcode 12 的同一目录
这对我有用。
如果您想避免为单个文件下载 11.25GB Xcode 12.2 beta 的麻烦。我有文件要分享。
您可以执行以下命令下载并将其放入 Xcode 包中:
sudo curl https://storage.googleapis.com/mobile-simulator-build/libnfshared.dylib -o /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libnfshared.dylib
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你
小智 25
Apple 显然忘记libnfshared.dylib在 iOS 14 模拟器的 Xcode 12 最终版本中添加任何原因。在 Apple 修复此问题之前,一个可行的解决方法是从 Xcode 12 beta 6 复制丢失的 lib(从 Apple 的开发人员下载部分下载 beta)。丢失的库可以在这里找到,并且必须进入最终 Xcode 12 的相同目录:
Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib
链接器说文件 libnfshared (mach-o) 不包含模拟器的二进制文件,这很奇怪,因为它是 Apple 的核心框架。
使用 Xcode 12 创建一个新项目并导入 NFC 框架。构建它并在模拟器上运行它。如果它没有崩溃,那么在这些项目之间比较专门为 DYLD 的构建设置。
如果这没有帮助,请删除所有模拟器并重新创建新模拟器。
更新:
这是 IOS 14 中的错误,有人提交了雷达:openradar.appspot.com/FB8699389
| 归档时间: |
|
| 查看次数: |
6380 次 |
| 最近记录: |