[iOS] watchOS 使用 .a 库时出现 ld: bitcode bundle could not be generated 错误
0、编译环境:
OSX Yosemite 10.10.5
Xcode 7.1
watchOS 2.0
1、问题描述:
在升级 Xcode 7.0 后,编译 watchOS 版本静态库如果依然是用 build 目录下的 Release-watchos 里面的 .a 就有可能出现如下 ld: bitcode bundle could not be generated 错误:
这里面说你有库没有生成 bitcode 代码。但是库和库的依赖都已经打开 Enable bitcode 选项了:
这是什么问题呢?其实这段错误里面已经给了我们提示:
All object files and libraries for bitcode must be generated from Xcode Archive or Install build for architecture armv7k
也就是说我们要用 Archive 模式生成相应的库。
2、问题解决:
1)使用 Archive 模式生成库
首先点击你的 watchOS target,然后将 Scheme 切换为真机模式(Generic iOS Device),如图所示:
2)编译 Archive 版本库:
点击菜单 Product -> Archive,如图所示:
3)找到并 copy 生成 Archive 库:
找到生成 Archive 库地址方法如图所示:
然后将 .a 库替换成这个就好了!
3、补充问题:
苹果官方 Xcode 7.0 Release Node 说明已经修复了这个错误:
Building
Fixed: If your iOS app embedded a watchOS app and you had a framework for both iOS and watchOS embedded in each app, your project would fail to build when you performed the Archive action. (22183332)
不过就我刚刚升级的 7.1 版本来说,这一问题依然是存在的。