融云打包失败问题 bitcode bundle could not be generated because

来源:互联网 发布:c语言成绩管理系统设计 编辑:程序博客网 时间:2024/06/05 07:29
项目中集成了融云,一切工作准备就绪,编译运行真机测试都没有问题, 就差打包发布了,然后高高兴兴Archive了一波,眼看底下那个进度条就要满了,忽然报了一个错,提示打包失败了。一脸懵逼。。。错误信息如下:


bitcode bundle could not be generated because 'RongCloudIM/RongCloudIM/AgoraRtcEngineKit.framework/AgoraRtcEngineKit(libmediasdk.a-armv7-master.o)' was built without full bitcode.大概意思就是融云的某个包不支持bitcode,什么是bitcode :bitcode简单说就是编程语言与计算机可以直接执行的机器语言之间的中间码。苹果为了减少包的大小,打包时会将项目编译成bitcode,上传给iTunes store,用户下载时,bitcode可以根据机型版本,生成不同的包去适配。大概就是这么个意思,具体内容请戳这里。

Xcode7开始,新建项目默认就打开了bitcode设置。而且大部分开发者都被这个突如其来的bitcode功能给坑过导致项目编译失败,这些因为bitcode而编译失败的的项目都有一个共同点,就是链接了第三方库或者框架,而这些框架或者库不支持bitcode,从而导致项目编译不成功。解决方案有两种:1:联系第三方框架的提供者, 让他们支持bitcode,这个执行起来有难度,我好比我找融云客服,他们给我的答复是,视频通话那里用了声网的框架,而声网不支持,所以他们也没办法。就算他们可以更新,也是需要时间的。2:关闭bitcode功能;在xcode里把Enable Bitcode设置为NO;




关闭bitcode后打包时会打成很多种包,如图,(码掉的只是项目名,我这里是要发布蒲公英的,所以直接导出来了)



3:添加标记

在编译的时候加一个标记:embed-bitcode-marker(调试构建) embed-bitcode(打包/真机构建)。这个在clang编译器的参数是-fembed-bitcode,swift编译器的参数是-embed-bitcode



然而这个方法我试过了,依然是失败滴,上面那篇博客中可以找到其中原因:

哪怕你带了-fembed-bitcode参数也仅仅只是让项目中的部分C代码的目标文件带了bitcode段,而那小数的汇编代码的目标文件一样不带bitcode段,这样编译出这个库交给上层开发者使用的时候,就会出现在打包上传或者真机调试的时候因为Xcode默认开了bitcode功能而链接失败所以说解决办法只有两种。能用的只有一种,那就是暂且关闭bitcode。怎么让SDK支持bitcode,我找到一篇博客,并转载过来了,具体还没有细究,有兴趣的小伙伴可以戳这里



阅读全文
0 0