美文网首页
iOS - SDK开发(上集) ,SDK工程搭建

iOS - SDK开发(上集) ,SDK工程搭建

作者: 又系黎小明 | 来源:发表于2020-06-08 11:41 被阅读0次

    2021.04.25 更新:
    由于此文章开始编写时,没有使用markdown编辑器。导致部分代码直接复制黏贴后会出错,估计是自动插入了一些转义符引起的。
    这里借用一下别人的图做栗子😂

    借用别人的图


    项目简单介绍
    1. 此次创建的属于framework静态库
    2. SDK工程需要依赖其他第三方库,使用Pods依赖,不手动拉进工程
    3. Demo工程与SDK工程,在同一个工作空间 xxxxxx.xcworkspace
    4. 使用脚本合成模拟器和真机打包出来的framework
    5. framework项目上传
    6. 发布到pods上


    当前Xcode版本   11.4.1

    第一步: 创建工作空间

    1.创建一个孤独的文件夹。。。。(哭)

    一:图1

    2. 打开那个用了几百年的Xcode,File ---> New --->  Workspace

    一:图2

    3. 给我们的宝宝起个名,不好意思,是工作空间。。。选择那个自己创建的孤独的文件夹,放在里面

    一:图3

    第二步:创建SDK工程 和 Demo工程

    1. 创建project。File ---> New ---> Project
    (此处需要注意,必须打开着刚才创建的workspace来创建Project,不然后面会找不到这个workspace的选项)

    二:图1

    2.选择 iOS ---> Framework  ---> Next

    二:图2

    3. 还是起名字环节

    二:图3

    4. 选择刚才创建的文件夹,选择刚才创建的workspace

    二:图4

    5. 创建Demo工程, 还是相同的创建流程 File ---> New ---> Project ,这里大家都会了。Next !!!

    二:图5

    6. AddTo和Group也是选择刚才的workspace

    二:图6

    7. 完成!目录结构如下

    二:图7

    第三步:SDK工程与脚本配置
    1. 选择SDK工程 ---> Build Settings ---> 搜索Mach-O ---> 选择Static Library 静态库

    三:图1

    2. 如果需要模拟器调试,需要在Valid Architectures中,添加对模拟器支持 x86_64。 i386就不加了,估计没有32位的开发机器了吧。。

    三:图2

    3. 添加合并模拟器framework和真机framework的脚本

    三:图3

    4. 选择Cross-platform ---> Other ---> Aggregate。命名 完成后 Finish.

    三:图4.1 三:图4.2

    5. 选择刚创建的MergeRunScript ---> Build Phases ---> 点击 + 号 ---> New Run Script Phase

    三:图5

    6. 添加脚本 (复制黏贴大家好^-^)  此脚本会报错,文章尾部已更新最新可行的脚本。

    if["${ACTION}"="build"]

    then

    INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.framework

    DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework

    SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework

    if[ -d"${INSTALL_DIR}"]

    then

    rm -rf"${INSTALL_DIR}"

    fi

    mkdir -p"${INSTALL_DIR}"

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

    #ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"

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

    #open "${DEVICE_DIR}"

    #open "${SRCROOT}/Products"

    fi

    三:图6

    第四步:SDK接口文件

    1. 创建继承于NSObject的总接口api文件,把api.h拉到Public,暴露给使用方。(我个人没有使用自带的LmSDKProject.h文件,所以隐藏掉)

    四:图1

    2. 基本必备的快速接入、代理和销毁等。参考一些成熟的SDK来设计,这个具体看业务。
    .h文件

    四:图2

    3. 单例的注意事项。
    为了保证单例,需要重写NSZone的创建方法。
    还有销毁单例的方法,需要把
    static LmSdkApi * _sharedInstance = nil;
    static dispatch_once_t onceToken;
    声明成全局,并设计一个快捷销毁方法给使用方

    .m文件

    四:图3

    第五步:验证framework的使用

    1. 选择SDK工程, command + B  编译,分别生成模拟器和真机两种指令集的包

    五:图1.1 五:图1.2

    2. 选择脚本并command + B 编译一次,把模拟器和真机的framework合并。在Products文件夹中,得到成功的framework

    五:图2.1 五:图2.2

    3.查看framework支持的指令集
    ~ 打开命令行。
    ~ cd 到 framework目录  
    ~ file 查看目标文件
    (这里有一点需要注意,SDK工程的最低支持版本,会影响到最终打包出来的指令集。例如:SDK工程最低支持iOS13.4的话,最终的framework是不含armv7指令集的。因为32位的机器升不了这个版本)

    五:图3

    第六步: 配置Pods 
    1. 命令行,cd进入workspace所在的文件夹  . 输入 touch Podfile

    六:图1

    2. 打开Podfile 按格式配置 

    workspace '工作空间的名字.xcworkspace'

    target 'SDK工程名字' do

      platform :ios, '10.0'

      project 'SDK文件夹名字/SDK工程名字.xcodeproj'

      pod 'AFNetworking'

    end

    target 'Demo工程名字' do

      platform :ios, '10.0'

      project 'Demo文件夹名字/Demo工程名字.xcodeproj'

        pod 'AFNetworking'

    end

    六:图2

    3.命令行输入 pod install. 迅雷不及掩耳之际,Pods配置完成了

    六:图3

    到这里为止,SDK工程搭建流程已基本完成,可以愉快地开始开发了。
    SDK工程是一个创造轮子的过程,实际上我们不应该过多地依赖第三方库,具体如何拿捏需要看不同的业务和功能。

    下一集会继续写SDK的调试和发布。
    iOS - SDK开发(下集) ,SDK发布到Cocoapods - 简书

    小弟不才,若有错误之处,欢迎留言讨论(^_^)


    2021.04.19 脚本更新, 请点击此处跳转 :iOS开发 - 合并静态库架构缺失或重复 - 简书

    相关文章

      网友评论

          本文标题:iOS - SDK开发(上集) ,SDK工程搭建

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