微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

自定义框架:dyld:未找到符号:_ $ s11CryptoSwift7PaddingO5pkcs7yA2CmFWC

如何解决自定义框架:dyld:未找到符号:_ $ s11CryptoSwift7PaddingO5pkcs7yA2CmFWC

我正在使用使用3种不同的cocoapods创建的自定义框架。我通过删除创建的xc框架在客户端应用程序中使用此自定义框架。客户端应用程序一启动,它就会崩溃,并显示以下崩溃日志。我已经看到此问题报告了苹果和stackoverflow上的许多其他地方,但是我找不到适合我的正确答案。现在,我已将客户端应用程序和框架存储库都上传到了github,这样任何试图帮助我的人都可以实际看到设置和代码。请任何人为该问题提出适当的解决方案。

框架:https://github.com/deepesh259nitk/PaymentsKit

客户端应用程序:https://github.com/deepesh259nitk/PaymentClient

应用启动时崩溃日志

模型:未找到符号:$ s11CryptoSwift7PaddingO5pkcs7yA2CmFWC 引用自:/Users/deepesh.vasthimal/Library/Developer/Xcode/DerivedData/PaymentClient-bnsircrdeaciebedmqaliyxezdqe/Build/Products/Debug-iphonesimulator/PaymentsKit.framework/PaymentsKit 预期位于:/Users/deepesh.vasthimal/Library/Developer/CoreSimulator/Devices/A0876375-98D5-4215-A139-68F29E787388/data/Containers/Bundle/Application/D954732B-EDDC-478E-85C4-C5C9B14FDDEE/PaymentClient.app/框架/CryptoSwift.framework/CryptoSwift 在/Users/deepesh.vasthimal/Library/Developer/Xcode/DerivedData/PaymentClient-bnsircrdeaciebedmqaliyxezdqe/Build/Products/Debug-iphonesimulator/PaymentsKit.framework/PaymentsKit中 dyld:启动,加载依赖库 DYLDSHAREDCACHEDIR = /用户/deepesh.vasthimal/Library/Developer/CoreSimulator/Caches/dyld/19H2/com.apple.CoreSimulator.SimRuntime.iOS-14-0.18A372 DYLDROOTPATH = /用户/deepesh.vasthimal/下载/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot DYLDLIBRARYPATH = /用户/deepesh.vasthimal/Library/Developer/Xcode/DerivedData/PaymentClient-bnsircrdeaciebedmqaliyxezdqe/Build/Products/Debug-iphonesimulator:/Users/deepesh.vasthimal/Downloads/Xcode.app/Contents/Developer/P。平台/库/开发人员/ CoreSimulator /配置文件/运行时/iOS.simruntime/内容/资源/ RuntimeRoot / usr / lib / system / introspection DYLDINSERTLIBRARIES = /用户/deepesh.vasthimal/下载/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libBacklibRecording .dylib:/ Users / de

我尝试过的事情。

  1. 我尝试完全删除CryptoSwift,以查看是否由于此Pod导致错误发生,但是崩溃发生在另一个Pod的JOSESwift中。
  2. 我已经意识到崩溃的发生是因为它在CryptoSwift和JOSESwift中都找不到特定的符号。而且,当我使用这些库的特定方法时。

例如,如果我使用CryptoSwift的AES方法(如果看到框架的仓库),则通过添加以下代码,将发生崩溃,仅包含pod不会崩溃,但使用它会导致崩溃。

_ $ s11CryptoSwift7PaddingO5pkcs7yA2CmFWC

guard let aesObject = try? AES(key: [UInt8](Data()),blockMode: CBC(iv: Array(Data())),padding: .pkcs7) else {   return "" }
  1. 我还在客户端应用程序中添加了Pod,因此如果您看到“客户端应用程序”回购,它不会被添加两次,您将看到所有3个Pod已添加

解决方法

在客户端应用的pod文件末尾添加以下脚本。

(def pat #"bar")

然后运行pod命令

post_install do |installer|
        installer.pods_project.targets.each do |target|
          target.build_configurations.each do |config|
            config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
          end
        end
      end

并修复崩溃。

,

再次运行 pod install 可修复该问题,而无需向 pod 文件添加任何其他内容。

但是,在每个 pod 解体并且 pod install 不起作用后,再次进行 pod install 应该可以修复。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。