美文网首页编程开发
iOS 创建自己的SDK静态库(.a文件)并使用cocopods

iOS 创建自己的SDK静态库(.a文件)并使用cocopods

作者: cyhai | 来源:发表于2019-08-21 16:13 被阅读0次

    iOS开发中支持静态库与动态库,不过使用动态库,上架会有麻烦。这里讲到如果创建静态库.a文件,其实很早之前公司要求做wifi的SDK的时候就开始涉及这个东西了,但一直没写出来。

    创建.a文件

    首先新建一个静态库的项目

    image.png
    命名为CyhLib,再把一些功能代码放进来,我直接放入一个验证手机号的类别文件,如下图
    image.png
    然后把#import "NSString+checkNum.h"引入到CyhLib.h中。因为方便引用,待会儿我们只暴露出.h。
    接下来我们要创建两个.a文件,一个是模拟器用,一个是真机用的。但在打包之前,我们先要处理暴露文件。
    屏幕快照 2019-08-21 下午12.04.17.png
    image.png 屏幕快照 2019-08-21 下午12.08.00.png 屏幕快照 2019-08-21 下午12.08.21.png
    commad + B
    
    image.png
    image.png

    注意这里选择的不是模拟器运行,继续

    commad + B
    

    这时候就得到了两个.a文件。


    屏幕快照 2019-08-21 下午12.13.32.png image.png

    把Release-iphoneo和Debug-iphonesimulator复制到桌面新建的文件夹
    最后使用命令lipo -create xxx.a xxx2.a -output xxx3.a

    lipo  -create /Users/chenhaige/Desktop/aFile/Debug-iphonesimulator/libCyhLib.a /Users/chenhaige/Desktop/aFile/Release-iphoneos/libCyhLib.a -output /Users/chenhaige/Desktop/aFile/newFile/CyhLib.a
    
    image.png

    使用.a文件

    新建项目或者随便找个已创建测试项目,可直接拖进来放在Frameworks目录下


    image.png

    再把暴露的.h文件引进来


    image.png
    下面是我的.a文件的功能测试
    BOOL isPhoneNum = [@"15677194567" checkPhoneNumInput];
        if (isPhoneNum) {
            NSLog(@"是手机号");
        }
        else
        {
            NSLog(@"不是手机号");
        }
    

    集成到cocopods中使用

    接下来,我把静态库和暴露的.h文件放入cocopods中使用,将静态库和暴露的.h上传至github上的仓库。并更新一个release版本。


    image.png

    但是,这里有个坑,必须先填完,把.a文件的名字加上前缀lib,就像刚生成那时候的名字

    image.png

    自动生成这个加前缀的名字不是没有道理的,不加前缀在添加到cocopods的podspec文件里面的时候,会找不到这个静态库,怎么弄都是瞎搞鼓。

    image.png

    更改cyhCheckphoneNum.podspec版本号,与spec.source_files和spec.vendored_libraries

    spec.version      = "1.0.2"
    spec.source_files  = "checkphoneNum/**/*"
    spec.vendored_libraries = "checkphoneNum/libCyhLib.a"
    #spec.vendored_frameworks 引入framework后缀
    

    更新github上的release版本
    验证是否通过,通过上传至github

    pod spec lint
    

    上传至cocopods

    pod trunk push cyhCheckphoneNum.podspec
    

    最后使用cocopods安装使用


    image.png
    #import <CyhLib.h>
    
    BOOL isPhoneNum = [@"15777183567" checkPhoneNumInput];
        if (isPhoneNum) {
            NSLog(@"是手机号");
        }
        else
        {
            NSLog(@"不是手机号");
        }
    

    结束

    相关文章

      网友评论

        本文标题:iOS 创建自己的SDK静态库(.a文件)并使用cocopods

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