使用自定义框架和 StripeTerminal 时,由于“库未加载”错误,应用程序在真实设备上崩溃

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

我使用以下设置在 Xcode 16 中构建了一个全新的工作区:

  • 包含名为 “App1”的应用程序的项目。
  • 名为 “MobileCore” 的自定义框架的单独项目,其中包括我工作区中其他应用程序的可重用类。
  • 工作区使用 Swift Package Manager (SPM) 作为依赖项。

依赖关系:

  • App1 使用 Firebase
  • MobileCore 使用 StripeTerminal

我已使用 SPM 添加 StripeTerminal 作为 MobileCore 的依赖项。它出现在 MobileCore 目标下的 Frameworks and Libraries 中,并且还添加到 Link Binary with Libraries

问题:

当我从 Xcode 构建并运行 App1 时,它在 模拟器 上运行良好。但是,当我构建并将其部署到真实设备时,它崩溃并出现以下错误:

dyld[5040]: Library not loaded: @rpath/StripeTerminal.framework/StripeTerminal

重现步骤:

  1. 在 Xcode 16 中创建一个新工作区。
  2. 将新的应用程序项目 (App1) 和框架项目 (MobileCore) 添加到工作区。
  3. 使用 SPM 将 StripeTerminal 包添加到 MobileCore 作为依赖项。
  4. StripeTerminal 添加到 框架和库,并为 MobileCore 链接二进制文件与库
  5. 尝试在 MobileCore 中导入 StripeTerminal
  6. 在真实设备上构建并运行 App1

应用程序崩溃并出现以下错误:

dyld[5040]: Library not loaded: @rpath/StripeTerminal.framework/StripeTerminal

其他详细信息:

  • MobileCoreBuild Settings > Linking > Runpath Search Paths 下,我有:
    $(inherited)
    @executable_path/Frameworks
    @loader_path/Frameworks
    
  • Build Settings > Search Paths 下,Framework Search PathsHeader Search PathsLibrary Search Paths 均为空。

我尝试过的:

  • 我确认 StripeTerminal 已正确添加到 Link Binary with Libraries
  • 我验证了运行路径搜索路径包括
    @executable_path/Frameworks
    @loader_path/Frameworks
  • 应用程序在模拟器上运行,但在设备上失败,表明这是运行时链接问题。

问题:

什么可能导致此问题,以及如何修复部署到真实设备时缺少库的错误?

enter image description here enter image description here

ios xcode stripe-payments
1个回答
0
投票

我认为您还需要在 Xcode 项目中将“始终嵌入 Swift 标准库”构建设置设置为“是”。清理并重建项目,然后在真实设备上再次测试。

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