ios – Xcode 8:存档构建失败(对于嵌套框架),链接错误.常规构建成功编译

前端之家收集整理的这篇文章主要介绍了ios – Xcode 8:存档构建失败(对于嵌套框架),链接错误.常规构建成功编译前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑
似乎已经深入研究了它在调试模式下构建但在发布模式下不构建的问题.仍然试图理解为什么它建立在一个而不是另一个

原始问题

我有一个Xcode工作区,具有以下结构.

工作区:

> UIProject
> FrameworkA
> FrameworkB

FrameworkB嵌套在FrameworkA中,因此FrameworkA依赖于FrameworkB.两者都是我创建的自定义框架.

它构建和编译很好.当我尝试存档它时,我收到以下错误

Undefined symbols for architecture armv7:
  "ADI4ONS.Connection4ONS.connectionStat.getter : Swift.Bool",referenced from:
      type Metadata for AircraftServices.connection in Connection.o
  "ADI4ONS.Connection4ONS.connectionStat.setter : Swift.Bool",referenced from:
      type Metadata for AircraftServices.connection in Connection.o
  "ADI4ONS.Connection4ONS.connectionStat.materializeForSet : Swift.Bool",referenced from:
      type Metadata for AircraftServices.connection in Connection.o
  "ADI4ONS.Connection4ONS.connectionString.getter : Swift.String",referenced from:
      type Metadata for AircraftServices.connection in Connection.o
  "ADI4ONS.Connection4ONS.connectionString.setter : Swift.String",referenced from:
      type Metadata for AircraftServices.connection in Connection.o
  "ADI4ONS.Connection4ONS.connectionString.materializeForSet : Swift.String",referenced from:
      type Metadata for AircraftServices.connection in Connection.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command Failed with exit code 1 (use -v to see invocation)

其中ADI4ONS是frameworkB,AircraftServices是FrameworkA.欢迎任何帮助.

项目/目标配置

> Bitcode已启用
>仅将Build Active Architecture设置为NO(尝试’是’也是)
> Xcode 8 with swift 3.0

实验尝试
我试过的一些事情

>尝试将Archive设置为Debug(而不是编辑架构中的默认Release):NO LUCK
>为UIProject创建了一个单独的工作区,并将框架二进制文件导入到该工作区中.档案成功:工作量很大(但不是我想要的)

解决方法

好的,经过大量的研究和实验,这是我的结果.

所以我找出了导致发布模式构建问题的参数.它是“Swift编译器 – 代码生成:优化级别”.它有三个值

>无[-Onone]

>调试的默认值
>也适用于我的发布.

>快速,单文件优化[-O]
-Works发布

>很可能是我要设定的价值

>快速,整体模块优化[-O -whole-module-optimization]

>发布的默认值
>这会导致休息

我试图更多地研究WMO,但没有深入研究它.好像它是在Xcode 7中引入的.

我的框架也都在Swift中.

猜你在找的Xcode相关文章