美文网首页Unity
Unity打包libiPhone-lib.a过大问题?

Unity打包libiPhone-lib.a过大问题?

作者: 光明程辉 | 来源:发表于2017-03-10 20:45 被阅读859次

    问题:打包出来的IPA文件太大?libiPhone-lib.a竟然过1G!!!

    解决:只需在xcode工程中 【build Settings】下的搜索 “bidcode”,把yes改为no重新打包就行了。

    01.png

    bit code 解释:
    就是链接了第三方二进制的库或者框架,而这些框架或者库恰好没有包含bitcode的东西(暂且称为东西),从而导致项目编译不成功.所以每当遇到这个情况时候大部分人都是直接设置Xcode关闭bitcode功能。
    LLVM是目前苹果采用的编译器工具链,Bitcode是LLVM编译器的中间代码的一种编码,LLVM的前端可以理解为C/C++/OC/Swift等编程语言,LLVM的后端可以理解为各个芯片平台上的汇编指令或者可执行机器指令数据,那么,BitCode就是位于这两者直接的中间码. LLVM的编译工作原理是前端负责把项目程序源代码翻译成Bitcode中间码,然后再根据不同目标机器芯片平台转换为相应的汇编指令以及翻译为机器码.这样设计就可以让LLVM成为了一个编译器架构,可以轻而易举的在LLVM架构之上发明新的语言(前端),以及在LLVM架构下面支持新的CPU(后端)指令输出,虽然Bitcode仅仅只是一个中间码不能在任何平台上运行,但是它可以转化为任何被支持的CPU架构,包括现在还没被发明的CPU架构,也就是说现在打开Bitcode功能提交一个App到应用商店,以后如果苹果新出了一款手机并CPU也是全新设计的,在苹果后台服务器一样可以从这个App的Bitcode开始编译转化为新CPU上的可执行程序,可供新手机用户下载运行这个App.

    xcode相关设置:http://blog.csdn.NET/skylin19840101/article/details/51452594

    实际上在Xcode 7中,我们新建一个iOS程序时,bitcode选项默认是设置为YES的。我们可以在”Build Settings”->”Enable Bitcode”选项中看到这个设置。

    不过,我们现在需要考虑的是三个平台:iOS,Mac OS,watchOS。

    对应iOS,bitcode是可选的。
    对于watchOS,bitcode是必须的。
    Mac OS不支持bitcode。

    相关文章

      网友评论

        本文标题:Unity打包libiPhone-lib.a过大问题?

        本文链接:https://www.haomeiwen.com/subject/wepogttx.html