美文网首页
iOS打包framework静态库

iOS打包framework静态库

作者: chernyog | 来源:发表于2018-01-19 15:10 被阅读171次

    环境环境

    • Mac: 10.12.6
    • Xcode: 9.1

    1. 创建项目

    1.1 新建工程

    1.2 添加文件

    • 把写好的代码文件拖入到项目里
    • 主头文件中导入需要暴露的头文件

    1.3 设置Headers

    Targets -> 项目名字 -> Build Phases -> Headers

    • 添加需要的头文件,然后把需要暴露的头文件拖入到 Public 区域

    1.4 设置 Mach-O Type

    2. 编译项目,产生 .framework文件

    2.1 校验生成的静态库支持的框架类型

    • 命令:lipo -info EncryptLib
    • 输出结果:
      • 真机状态编译:Architectures in the fat file: EncryptLib are: armv7 arm64
      • 模拟器状态编译:Non-fat file: EncryptLib.framework/EncryptLib is architecture: x86_64

    问题: 怎么才能编译一次,同时支持真机和模拟器架构呢?

    答案:添加一个跨平台的targets

    3. 跨平台

    3.1 添加 Target

    3.2 配置脚本

    FMK_NAME=${PROJECT_NAME}
    INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
    WRK_DIR=build
    DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
    SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
    xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build
    xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build
    if [ -d "${INSTALL_DIR}" ]
    then
    rm -rf "${INSTALL_DIR}"
    fi
    mkdir -p "${INSTALL_DIR}"
    cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
    lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
    rm -r "${WRK_DIR}"
    open "${INSTALL_DIR}"
    

    3.3 现在新建的Target,编译

    3.4 校验生成的静态库支持的框架类型

    • 不管编译的时候选择的是真机还是模拟器,都兼容。
    • Architectures in the fat file: EncryptLib are: i386 x86_64 armv7 arm64

    相关文章

      网友评论

          本文标题:iOS打包framework静态库

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