zoukankan      html  css  js  c++  java
  • iOS静态库开发中对Bitcode的支持

    1.bitcode

    bitcode是LLVM编译器将C/C++/OC/Swift等前端变成语言编译成多种不同芯片上的机器指令过程中的中间代码。并且这个中间代码是CPU无关的。

    原本我们的APP里要包含多种支持CPU架构的代码。支持Bitcode的优势就是在提交store后,苹果再动态生成相应CPU的APP版本,这样每个版本的APP就相对小了很多。

    相关bitcode的详细介绍参看这篇文章:http://www.jianshu.com/p/f42a33f5eb61

    2.SDK开发中bitcode的支持:

    (1)通过在build setting中对OTHER_CFLAGS字段的release时添加-fembed-bitcode

    (2)新建target,新建Aggregate,添加编译规则如下:

    # define output folder environment variable
    UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
    
    # Step 1. Build Device and Simulator versions
    xcodebuild -target TARGETNAME ONLY_ACTIVE_ARCH=NO -configuration Release -sdk iphoneos  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
    xcodebuild -target TARGETNAME -configuration Release -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
    
    # make sure the output directory exists
    mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
    
    # Step 2. Create universal binary file using lipo
    lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a"
    
    # Last touch. copy the header files. Just for convenience
    cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/include" "${UNIVERSAL_OUTPUTFOLDER}/"

    同时也这是将SDK中模拟器和真机编译后的SDK包合并的方法。

    在真机编译时加上  OTHER_CFLAGS="-fembed-bitcode"  ,就能支持bitcode了。

     

  • 相关阅读:
    批量下载B站视频
    MATLAB安装
    printf小结
    hdoj 1874 dijkstra
    斐波那契而数列
    PAT数列排序
    感想
    物理定律的适用范围
    本博客的文章曾经恢复过,但迅速被部分删除(不知名的原因)
    (废墟重建)程序员如何学习书本上的例子 how programmers learn examples of books
  • 原文地址:https://www.cnblogs.com/rayshen/p/5646182.html
Copyright © 2011-2022 走看看