美文网首页
iOS开发自己的Framework之·真机模拟器合并-2-涵手动

iOS开发自己的Framework之·真机模拟器合并-2-涵手动

作者: 爱恨的潮汐 | 来源:发表于2021-04-12 14:09 被阅读0次
    一、前提条件:你已经创建好自己的xx.framework,如果还没有自己的xx.framework,请参考:如何创建自己的framework
    二、步骤简要,这里提供了两种实现方式
    方式一:使用shell,简单方便
    方式二:使用手动合成,虽然慢,但是更加体现原理和过程,也能很好的解释shell中的命令

    方式一:
    1、生成脚本 并 设置脚本路径
    方式二:
    1、获取真机编译的framework 和 模拟器编译的framework;
    2、合并framework通过终端命令:lipo -create 真机路径 模拟器路径 -output 真机路径;
    3、检验合并结果通过终端命令:lipo -info xx.framework/xx

    三、方式一的详细步骤
    1、创建添加
    image image image

    2、复制shell代码,直接复制我下面的shell代码,到你的工程中就行了,不用做任何更改

    image
    #!/bin/sh
    #要build的target名
    TARGET_NAME=${PROJECT_NAME}
    if [[ $1 ]]
    then
    TARGET_NAME=$1
    fi
    UNIVERSAL_OUTPUT_FOLDER="${SRCROOT}/${PROJECT_NAME}_Products/"
    
    #创建输出目录,并删除之前的framework文件
    mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}"
    rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework"
    
    #分别编译模拟器和真机的Framework
    xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
    xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
    
    #拷贝framework到univer目录
    cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework" "${UNIVERSAL_OUTPUT_FOLDER}"
    
    #合并framework,输出最终的framework到build目录
    lipo -create -output "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework/${TARGET_NAME}"
    
    #删除编译之后生成的无关的配置文件
    dir_path="${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/"
    for file in ls $dir_path
    do
    if [[ ${file} =~ ".xcconfig" ]]
    then
    rm -f "${dir_path}/${file}"
    fi
    done
    #判断build文件夹是否存在,存在则删除
    if [ -d "${SRCROOT}/build" ]
    then
    rm -rf "${SRCROOT}/build"
    fi
    rm -rf "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator" "${BUILD_DIR}/${CONFIGURATION}-iphoneos"
    #打开合并后的文件夹
    open "${UNIVERSAL_OUTPUT_FOLDER}"
    
    
    3、编译工程,获取最终的framework,并验证是否包含真机和模拟器的架构关于架构:armv7,armv7s,arm64,i386,x86_64
    image image
    四、方式二的详细步骤
    1、桌面创建好文件夹,准备存放真机.framework 和 模拟器.framework
    image
    2、Xcode工程-Edit scheme...-Run-选中Release
    image
    3、先shift + command + K 清除一下,然后command + B 编译获取真机.framework,并放入到真机文件夹中备用
    image image image
    4、先shift + command + K 清除一下,然后command + B 编译获取模拟器.framework,并放入到模拟器文件夹中备用
    image image image
    5、验证编译获取到的真机.framework和模拟器.framework的架构是否对应正确

    注意:终端命令 lipo -info xx.framework/xx

    关于架构:armv7,armv7s,arm64,i386,x86_64

    image image
    5、合并真机和模拟器的framework,这里我是将最终合并的framework,合并到真机.framework中,合并的终端命令:lipo -create 真机路径 模拟器路径 -output 真机路径

    注意:这边的真机路径 和 模拟器路径,是xx.framework/xx的路径

    image
    6、验证合并真机和模拟器的结果framework的架构是否包含了真机和模拟器的架构
    image
    7、使用framework

    这里就不多说了,大家应该都懂,完结。

    五、参考链接:

    shell方式
    shell方式
    方式二

    作者:pengshuangta
    链接:https://www.jianshu.com/p/547e159bdea5
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:iOS开发自己的Framework之·真机模拟器合并-2-涵手动

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