zoukankan      html  css  js  c++  java
  • 【转】iOS bitcode实战 -- without full bitcode

    原文网址:http://www.voidcn.com/blog/GrowingGiant/article/p-5012705.html

    关于bitcode的介绍,直接看下边两篇:

    理解Bitcode:一种中间代码 

    Xcode 7 Bitcode的工作流程及安全性评估 

    大牛们已经把bitcode说的很清楚了,我结合自己的实践梳理出以下流程:

    主工程引用静态库有两种形式(参考:在iOS中创建静态库

    ①:代码依赖

    ②:引用.a 

    对应的,让静态库支持bitcode也有不同的地方。

    先来看第一种:直接上图配置

    注意代码依赖的工程配置

    主工程的头文件搜索路径配置

    打开子工程的bitcode 

    看到第三张图片,就能看出来,代码依赖可以在主工程中动态修改。

    再来看第二种:

    打开.a工程的bitcode

    添加到主工程中

    配置主工程头文件

    这个时候,build一下没发现什么问题,但是如果archive就会报错:

    ld: bitcode bundle could not be generated because '/Users/xxx/work/test-demo/bitcode/BitcodeTest/BitcodeTest/TestLibA/libTestLibA.a(TestLibA.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build for architecture arm64

    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    解决这个错误就需要在.a工程中添加一下配置:

    other c flags 添加-fembed-bitcode,之后在run一下生成新的.a,然后替换主工程中的.a即可

    然后在对主工程archive,即可:


    现在系统的总结下:

    一、代码依赖 

    方便控制,但是每次build花费的时间就长了。

    如果碰到静态库有分类,报错unregistered selector ....,只需要在主工程other link flags 添加 -all_load即可。

    二、.a引用

    .a稍微复杂了点,不过一般引用的.a都是第三方的,也无需考虑太多。如果是自己制作,就参考上边。

    对于.a引用还有另一个问题,如何判断.a支持bitcode?

    进入到.a所在的目录,
    使用以下命令:
    otool -arch armv7 -l  xxxx.a | grep bitcode
    otool -arch arm64 -l  xxxx.a | grep bitcode 
     
    能看到bitcode字样,至少有支持bitcode的可能,为什么说可能呢,最后要看archive

    实践:


    二、

    lipo -info xxxx.a
    lipo -thin arm64 xxxx.a -output xxxx-arm64.a
    ar -x  xxxx-arm64.a //这一步完成会得到一个.o文件,共下部使用
    otool -l xxxx.o | grep bitcode


    通过这两种方法,能方便的查看.a是否支持bitcode.

    最能直接检验的方法就是archive。在最后打包的时候能看到如下就说明完全没有问题了。

     
  • 相关阅读:
    hdu 1199 Color the Ball 离散线段树
    poj 2623 Sequence Median 堆的灵活运用
    hdu 2251 Dungeon Master bfs
    HDU 1166 敌兵布阵 线段树
    UVALive 4426 Blast the Enemy! 计算几何求重心
    UVALive 4425 Another Brick in the Wall 暴力
    UVALive 4423 String LD 暴力
    UVALive 4872 Underground Cables 最小生成树
    UVALive 4870 Roller Coaster 01背包
    UVALive 4869 Profits DP
  • 原文地址:https://www.cnblogs.com/wi100sh/p/6206472.html
Copyright © 2011-2022 走看看