美文网首页
xcodebuild 导出framework

xcodebuild 导出framework

作者: 初灬终 | 来源:发表于2017-12-30 22:10 被阅读354次

    场景

    framework开发中,需要导出framework给其他人使用。
    他人可能使用模拟器,也可能使用真机。
    所以需要你提供的framewor同时支持模拟器和真机。

    思路

    启动shell脚本:

    1. build release版本 模拟器适用的framework
    2. build release版本 真机适用的framework
    3. 合并1,2中生成的framework
    4. 导出到指定目录

    使用xcodebuild+shell

    前提:
    保证framework在模拟器上build和generic iOS device上build没有错误,
    且生成的framewor可以在相应的环境中适用。

    1.新建target,负责启动shell脚本
    image.png image.png
    2.shell脚本编写

    一般framework打包时,会用到一下命令

    FRAMEWORK_NAME='framework的名字'
    WORK_DIR='build'
    #release环境下,generic ios device编译出的framework。这个framework只能供真机运行。
    DEVICE_DIR=${WORK_DIR}/'Release-iphoneos'/${FRAMEWORK_NAME}'.framework'
    #release环境下,simulator编译出的framework。这个framework只能供模拟器运行。
    SIMULATOR_DIR=${WORK_DIR}/'Release-iphonesimulator'/${FRAMEWORK_NAME}'.framework'
    #framework的输出目录
    OUTPUT_DIR=${SRCROOT}/'Products'/${FRAMEWORK_NAME}'.framework'
    
    ##xcodebuild打包
    xcodebuild -target ${FRAMEWORK_NAME}
    ONLY_ACTIVE_ARCH=NO
    -configuration 'Release'
    -sdk iphoneos clean build
    
    xcodebuild -target ${FRAMEWORK_NAME} 
    ONLY_ACTIVE_ARCH=NO 
    -configuration 'Release' 
    -sdk iphonesimulator clean build
    
    #如果输出目录存在,即移除该目录,再创建该目录。目的是为了清空输出目录。
    if [ -d ${OUTPUT_DIR} ]; then
    rm -rf ${OUTPUT_DIR}
    fi
    mkdir -p ${OUTPUT_DIR}
    
    #复制release-simulator下的framework到输出目录
    cp -r ${DEVICE_DIR}/ ${OUTPUT_DIR}/
    
    #lipo命令合并两种framework,将SVProgressHUD.framework/SVProgressHUD,覆盖输出到输出目录。
    lipo -create ${DEVICE_DIR}/${FRAMEWORK_NAME} ${SIMULATOR_DIR}/${FRAMEWORK_NAME} -output ${OUTPUT_DIR}/${FRAMEWORK_NAME}
    
    rm -r ${WORK_DIR}
    #打开输出目录
    open ${OUTPUT_DIR}
    

    相关文章

      网友评论

          本文标题:xcodebuild 导出framework

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