框架是在没有完整位码的情况下构建的-框架位码已启用

时间:2018-12-06 10:51:09

标签: ios xcode ios-frameworks

在存档我的应​​用程序时遇到此错误。使用的框架是我自己的。所以我交叉检查。框架中的位代码已启用。不知道为什么会收到这个问题。这些是我框架中的构建设置:

enter image description here

我关注了this link,但没有成功。试图在框架的项目(不是目标,而是项目,因为在链接中建议使用)中设置 -fembed-bitcode

7 个答案:

答案 0 :(得分:3)

尝试设置 跳过安装 并在框架构建设置中将嵌入位代码设置为 YES

Skip Install

Embed Bitcode

答案 1 :(得分:1)

如果您执行以下命令

  • 启用位码”设置为“是”添加
  • 标记'添加了设置了值'bitcode'的'BITCODE_GENERATION_MODE' 跳过安装到是

直到他们才能工作

  • 干净整洁
  • flutter构建ios

因此,在更改构建设置后,您需要运行flutter build

答案 2 :(得分:0)

Bitcode是应用程序的抽象编码,可以根据给定的一组指令以不同的方式重新编译它。您可以通过运行确认您的二进制文件是否与位码兼容:

otool -l (my .o or .a file) | grep __LLVM

正常构建时,Xcode将构建标志-fembed-bitcode-marker添加到任何clang调用中。

要添加-fembed-bitcode:选择项目的Build Settings-> Other C标志,将Debug设置为-fembed-bitcode-marker,将Release设置为-fembed-bitcode,这将使用位代码来构建您的lib。

BITCODE_GENERATION_MODE

如果您在用户定义的设置上设置了BITCODE_GENERATION_MODE=bitcode,即使在构建阶段,也将使用标志-fembed-bitcode来编译文件。

而且,如果您设置BITCODE_GENERATION_MODE=marker,则将使用标志-fembed-bitcode-marker来编译文件,而与操作阶段无关。

因此,如果您想对每个动作(构建和存档)启用位码,则更好的方法是使用BITCODE_GENERATION_MODE设置,您可以手动或通过脚本来实现。

手册

在“构建设置”上,单击顶部的+号以添加名称为BITCODE_GENERATION_MODE的用户定义的构建设置,然后将“调试”设置为marker,将“发布”设置为bitcode

将架构编辑为Release,然后链接library.a文件并获取构建路径,获取库表单Release文件夹

脚本

xcodebuild BITCODE_GENERATION_MODE = bitcode OTHER_CFLAGS =“-fembed-bitcode” -target“ $ {PROJECT_NAME}” ONLY_ACTIVE_ARCH = NO -configuration $ {CONFIGURATION} -sdk iphoneos BUILD_DIR =“ $ {BUILD_DIR}” BUILD_ROOT =“ $ { “干净的构建

答案 3 :(得分:0)

添加到您的项目(无目标),并为每个项目添加到您的项目(例如Pod),在“构建设置”中添加一个“用户定义”:

BITCODE_GENERATION_MODE 调试=标记 发布=位码

答案 4 :(得分:0)

Build Settings-> User-Defined->添加设置BITCODE_GENERATION_MODE,然后设置值:bitcode

答案 5 :(得分:0)

  • 项目设置->选择框架目标->构建设置

    其他C标志

    中添加-fembed-bitcode
  • 单击+按钮->添加用户定义的设置

    密钥: BITCODE_GENERATION_MODE ,值:位代码

  • 在“构建”设置中将“仅将活动体系结构构建为是”。

答案 6 :(得分:-1)

对于下一个灵魂,它如OP中所述启用了所有功能,但仍无法使用它来存档应用程序,这对我有用:

  1. 按照操作说明中的说明进行所有设置。
  2. 存档产品
  3. 将其导出到您自己的文件系统
  4. 找到导出的mySadLittleFramework.xcarchive
  5. 右键单击文件,选择“显示包内容”
  6. 产品->库->框架将包含mySadLittleFramework.framework文件
  7. 将文件拖放/复制到某个地方。
  8. 将该文件作为框架添加到您的应用项目中。
  9. 存档应用程序。