框架是在没有完整位码的情况下构建的 - 框架位码已启用
Posted
技术标签:
【中文标题】框架是在没有完整位码的情况下构建的 - 框架位码已启用【英文标题】:Framework was built without full bitcode - Framework bitcode already enabled 【发布时间】:2018-12-06 10:51:08 【问题描述】:在归档我的应用时收到此错误。使用的框架是我自己的。所以我交叉检查了。框架中的位码已启用。不知道为什么我会遇到这个问题。这些是我框架中的构建设置:
我关注了this link,但没有成功。尝试在框架的项目(不是目标,而是项目,因为在链接中推荐)设置中设置-fembed-bitcode。
【问题讨论】:
【参考方案1】:Bitcode 是应用程序的抽象编码,可用于在给定一组指令的情况下以不同方式重新编译它。您可以通过运行来确认您的二进制文件是否与位码兼容:
otool -l (my .o or .a file) | grep __LLVM
.
当您正常构建时,Xcode 会将构建标志 -fembed-bitcode-marker
添加到任何 clang 调用中。
要添加-fembed-bitcode
:选择项目构建设置-> 其他C 标志,将调试设置为-fembed-bitcode-marker
并将发布设置为-fembed-bitcode
,这将使用位码构建您的库。
BITCODE_GENERATION_MODE
如果您在用户定义的设置中设置BITCODE_GENERATION_MODE=bitcode
,即使在构建阶段,文件也将使用标志-fembed-bitcode
进行编译。
而且,如果您设置BITCODE_GENERATION_MODE=marker
,文件将使用标志-fembed-bitcode-marker
编译,独立于操作阶段。
因此,如果您想为每个操作(构建和存档)启用位码,更好的方法是使用 BITCODE_GENERATION_MODE
设置,您可以手动或通过脚本来实现。
手动
在 Build Settings 上,单击顶部的 + 号以添加名为 BITCODE_GENERATION_MODE
的用户定义的构建设置,并将 Debug 设置为 marker
,将 Release 设置为 bitcode
。
Edit schema as 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="$BUILD_ROOT " 干净的构建
【讨论】:
不工作...也许你可以评论我的帖子?将不胜感激。 ***.com/questions/54082111/… @JhonnyTawk,我赞成你的答案,因为你基本上是在说这个答案所说的:***.com/a/38830497/9669133 ...你的只是有点难以阅读,但谢谢。它为我指明了正确的方向【参考方案2】:尝试设置 跳过安装到是 和 Enable Bitcode 在框架构建设置中Yes。
【讨论】:
@ViktorVostrikov 你如何导出你的框架?你使用 Build->Archive 吗? 不,我没有使用存档 尝试使用 Build->Archive 导出框架,然后将构建产品导出到某个文件夹 @VitaliyGozhenko 我尝试通过构建产品归档和导出我的框架到某个文件夹,但导出的产品文件夹为空【参考方案3】:如果你执行以下命令
Enable Bitcode' 设置为 'YES' 添加 Flags' 添加 'BITCODE_GENERATION_MODE' 并设置值 'bitcode' 跳过安装到是直到
扑干净 flutter build ios所以在你改变构建设置后你需要运行flutter build
【讨论】:
【参考方案4】:添加到您的项目(无目标),并为每个项目添加到您的项目中(例如:Pods),在 Build Settings 中添加一个“用户定义”:
BITCODE_GENERATION_MODE 调试 = 标记 发布 = 位码
【讨论】:
【参考方案5】:Build Settings -> User-Defined -> 添加设置BITCODE_GENERATION_MODE,然后设置值:bitcode
【讨论】:
【参考方案6】:项目设置 -> 选择框架目标 -> 构建设置
在其他 C 标志
中添加-fembed-bitcode
单击 + 按钮 -> 添加用户定义的设置
键:BITCODE_GENERATION_MODE,值:位码
Build Active Architectures Only 在构建设置中设置为是。
【讨论】:
【参考方案7】:就我而言,我有一个统一项目,我想将其导出到 ios 库以与另一个项目集成。所以我需要存档它-> Xcode 显示“库是在没有完整位码的情况下构建的”
我对这种情况的解决方案是:
目标 -> 框架需要存档 -> 构建设置 -> 启用位码 = 否enter image description here
希望对你有帮助
【讨论】:
【参考方案8】:对于下一个灵魂,并按照 OP 中的描述启用了所有功能,但仍然无法使用它归档应用程序,这对我有用:
-
按照 OP 中的说明设置所有内容。
存档产品
将其导出到您自己的文件系统
找到导出的 mySadLittleFramework.xcarchive
右键单击文件,选择显示包内容
产品 -> 库 -> 框架将包含 mySadLittleFramework.framework 文件
将该文件拖放/复制到某处。
将该文件作为框架添加到您的应用项目中。
归档应用。
【讨论】:
Product下没有Library文件夹 如果 Release 配置的 Skip Install 设置为 True,Product 下不会有 Library/Frameworks以上是关于框架是在没有完整位码的情况下构建的 - 框架位码已启用的主要内容,如果未能解决你的问题,请参考以下文章