【问题标题】:Swift Compiler Error: use of undeclared type with frameworkSwift 编译器错误:在框架中使用未声明的类型
【发布时间】:2019-03-22 20:41:06
【问题描述】:

我正在导入一个较新版本的自定义框架 LCCommLibrary,它创建了 LCConnection 类,我非常困惑为什么这会在尝试多项操作后构建但不存档。

  • 确保添加了目标(4 个应用,1 个测试)
  • 清理并重新启动项目

这会在我的 iOS 设备上构建并运行,但没有一个目标会存档。

【问题讨论】:

  • 您可以尝试取消选择Copy when installing 看看是否有什么不同吗?此外,从 Embedded Frameworks 中删除该库并仅将其保留在 Link Binary with Libraries 部分
  • 感谢@CatalinaT 的回复。我尝试了这两种方法,但无法存档。
  • 我不确定这是否重要,但您是否尝试过使用通用 iOS 设备而不是您的实际设备进行存档?不推荐后者。
  • @allocate 我有。也就是说,我又试了一次。
  • 有趣。您是否尝试过删除派生数据和/或可能重新克隆之类的半显而易见的事情?

标签: ios swift xcode compiler-errors frameworks


【解决方案1】:

存档通常使用Release 构建配置,而在设备上构建/运行使用Debug 构建配置,这暗示您那里有问题。

我想说,在你的情况下,你可以进入目标的构建设置,然后查看 Other Linker FlagsRunpath Search PathsLibrary Search Paths,展开它们以显示 DebugRelease 配置,然后确保你对它们都有相同的设置,你很可能会在其中一个中找到release 中缺少的东西。

【讨论】:

  • 这在大多数情况下都是正确的,但当然,我对这些构建设置的搜索比我愿意承认的要多!我赞成这条评论,因为它很有用。我发现问题是使用了框架的调试版本。
【解决方案2】:

终于找到问题了。罪魁祸首是包含的框架是该框架的debug 版本。这会导致 Archive Schemes 抛出此错误,因为存档使用 Release 作为默认值。

解决方案是单独打开LCCommLibrary项目,将Framework Target的Run Scheme改为Release,运行并构建,找到目标框架,导入并嵌入回主项目文件中,照常存档。

【讨论】:

    猜你喜欢
    • 2018-05-21
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多