美文网首页程序员
如何检测.a和.framework是否支持bitcode

如何检测.a和.framework是否支持bitcode

作者: AlwaysBlue | 来源:发表于2019-03-18 15:45 被阅读0次

    库分为动态库和静态库。
    库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。
    在Linux系统中:
    静态库:这类库的名字一般是libxxx.a;利用静态函数库编译出来的文件会比较大,因为整个函数库的所有数据都被整合进了目标代码中,优点就是编译后的执行程序不需要外部的函数库的支持,因为所有使用的函数都已经被编译进去了。缺点就是如果静态函数库改变的话,程序必须重新编译。

    动态库:一般是libxxx.so;动态库在编译的时候没有被编译进目标代码中,只有你的程序执行到相关函数时才会调用函数库里的相应函数,因此动态库所产生的可执行文件的大小比较小。由于函数库没有整合进你的程序,而是程序运行时动态申请并调用,所以程序的运行环境比较提供相应的库。动态函数库的改变,并不影响你的程序,所以动态函数库的升级比较方便。

    这里介绍一下各类设备对应的cpu架构

    模拟器包含的cpu架构:
    iPhone 4s – iPhone 5 : i386
    iPhone SE : x86_84
    iPhone5s – iPhone 7 Plus : x86_64

    真机设备包含的cpu架构
    iPhone 3g – iPhone 4s : armv7
    iPhone 5 – iPhone 5c : armv7s
    iPhone SE : arm64
    iPhone 5s – iPhone 7 Plus : arm64
    只要支持了armv7就不用再支持armv7s

     lipo -info xxxx.a(查看.a支持的库的类型)

    Architectures in the fat file: libJDPAuthSDK.a are: armv7 i386 x86_64 arm64

    如何检查.a静态库是否支持bitcode:

    otool -arch armv7 -l xxxxx.a | grep __bitcode | wc -l

          27
    输出值不为0

    如何检查.framework是否支持bitcode:

    网上找到的都不太具体,经反复试验,命令如下:
    otool -l 后跟的是.framework的二进制文件路径,但是这个路径一直不知道怎么找到。

    其实这个就是.framework的二进制文件,但是有的不是 有的路径是这样的 https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html 这是是下载的支付宝支付非bitcode版本 但是输入不同的路径也能成功,下面的version/A路径也是正确的方式

    在检测以上两种库时,都需要把库放到根目录,也就是我所在账号的目录下,不然会报找不到路径

    经历过的错误方式

    https://www.cnblogs.com/junhuawang/p/7598236.html
    https://github.com/Damonvvong/DevNotes/blob/master/Notes/framework.md
    https://github.com/Damonvvong/DevNotes/blob/master/Notes/framework2.md
    https://blog.csdn.net/buyu03/article/details/86646445
    https://blog.csdn.net/skylin19840101/article/details/72415279
    检测bitcode脚本
    https://stackoverflow.com/questions/32808642/how-to-check-if-a-framework-is-bitcode-supported-for-xcode7
    https://stackoverflow.com/questions/34959767/whats-the-difference-between-fembed-bitcode-and-bitcode-generation-mode

    相关文章

      网友评论

        本文标题:如何检测.a和.framework是否支持bitcode

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