美文网首页iOS控件
iOS保姆式教学编写framework和Bundle

iOS保姆式教学编写framework和Bundle

作者: 简单就是真 | 来源:发表于2023-09-04 15:36 被阅读0次

    一、最近在学习如何编写SDK,下面介绍一下如何生成framework和Bundle
    1.创建framework项目 ,File-->ios -->Framework


    image.png

    2.需要把要编译的源码移植到项目中,一开始项目会默认生成xxx.h文件,如果原来的源代码中没有xx.h文件,就可以使用的那个当前项目xx.h作为framework的头文件,如果有的话,可以直接删除


    image.png
    3.如果发现项目没有Products这个文件的话,到项目所在文件,右键xcodeproj显示包内容,搜索productRefGroup,把mainGroup的值复制给productRefGroup,关闭,xcode会自动刷新出来
    image.png
    4.修改配置参数
    image.png

    5.项目中如果用到了pch文件需要设置pch文件路径


    image.png
    6.设置开放的头文件,把开放文件从project移动到public
    image.png
    7.清空Bundle资源文件
    image.png
    8.创建Bundle文件
    image.png
    image.png
    9.配置Bundle
    image.png
    image.png

    10.添加图片和xib的资源


    image.png
    11.准备工作做完后,就可以编译Bundle了,command + B 编译完后,就可以直接移植到需要的宿主APP了
    image.png
    12.整合真机和模拟器framework,创建整合项目Aggregate
    image.png
    13.添加脚本
    image.png
    下面是脚本

    !/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}-iphonesimulator/{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}"
    把以上脚本直接复制就可以
    14.分别编译模拟器和真机环境下的frmaework


    image.png
    image.png

    15.最后编译整合项目,command+b 编译好后,会直接打开文件,这是最终的framework


    image.png

    二、集成Framework
    1.导入framework和Bundle文件


    image.png

    2.添加所需要的库


    image.png

    三、处理集成framework后报错问题:
    1.源码中包含三方包,添加-lstdc++,出现报错信息


    image.png
    1. Other Linker 添加 $(OTHER_LDFLAGS) -ObjC 解决selector not recognized 运行报错


      image.png

    3.importFramework


    image.png

    4.编译。运行,自此framework集成全部完成,这个过程是痛苦的,也是查找了很多的资料,解决了一个有一个问题,也希望能帮助到需要帮助的人

    相关文章

      网友评论

        本文标题:iOS保姆式教学编写framework和Bundle

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