美文网首页
iOS 动态库转静态库的配置

iOS 动态库转静态库的配置

作者: zhangpengfic | 来源:发表于2019-08-12 23:03 被阅读0次

    1.Build Settings配置编译设置

    Link With Standard Libraries -> NO 

    Mach-O Type -> Static Library

    Dead Code Stripping -> NO

    Enable Bitcode -> YES

    STRIP_STYLE -> Debugging Symbols

    Other C Flags 添加 -fembed-bitcode

    DEPLOYMENT_POSTPROCESSING = NO (默认NO多余)

    2.scheme配置成release

    3.合成framework

    方法1:

    1、 framework可以生成真机和虚拟机2个不同的framewrok,不能互通使用,所以必须要将2个framework合并才可以。

    2、在终端中输入一下命令

    lipo -create 【模拟器打包path】 【真机打包path】 -output 【导出兼容版本path】

    需要注意的是这个打包path指的是xxx.framework/xxx文件,而不是xxx.framework。导出的path是路径 + / + 文件名,比如我要放到桌面上,则路径应该是 /users/hzh/desktop/xxx

    生成的xxx文件替换到真机path路径下xxx.framework,覆盖原来的xxx文件。

    3、(敲黑板,划重点)如果你是swift,那么你还需要第四步才算完成,oc完成前面3步即可。将模拟器路径下xxx.framework/Modules/xxx.swiftmodule文件夹下的所有文件复制到真机path路径下xxx.framework/Modules/xxx.swiftmodule文件夹内。至此framework真机模拟机完成。

    方法2:(推荐)

    新建一个 Aggregate,并添加脚本

    把下面的脚本复制到 Run Script 里面

    # 如果工程名称和 Framework 的 Target 名称不一样的话,要自定义 FMKNAME

    #FMK_NAME="HelloFrame"

    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 VALID_ARCHS="i386 x86_64" #clean build

    # 清理临时目录

    if [ -d "${INSTALL_DIR}" ]

    then

    rm -rf "${INSTALL_DIR}"

    fi

    mkdir -p "${INSTALL_DIR}"

    cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"

    cp -R "${SIMULATOR_DIR}/Modules/${FMK_NAME}.swiftmodule/" "${INSTALL_DIR}/Modules/${FMK_NAME}.swiftmodule/"

    # 合并真机和模拟器编译结果

    lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"

    #导出到项目路径(改完Frame配置 再改PROJECT_DIR路径)

    PROJECT_DIR="${HOME}/Documents/Soursetree/iOS/sample_mmjrxy_ios/MMFinancialSchool/Request" ###这里需要修改其他拷贝就好!!!###

    rm -r "${PROJECT_DIR}/${FMK_NAME}.framework"

    cp -R "${INSTALL_DIR}" ${PROJECT_DIR}/${FMK_NAME}.framework

    open "${PROJECT_DIR}"

    rm -r "${WRK_DIR}"

    #open "${INSTALL_DIR}"

    选中我们刚才创建的 Aggregate 这个 target,然后 Build,就可以坐等结果了。注意这里必须连手机。

    相关文章

      网友评论

          本文标题:iOS 动态库转静态库的配置

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