美文网首页
iOS SDK 开发之静态库framework开发、调试、及上传

iOS SDK 开发之静态库framework开发、调试、及上传

作者: 桀骜不驯的搬砖者 | 来源:发表于2019-04-12 09:09 被阅读0次

    前段时间,由于公司和其他公司合作,需要用到我们产品的某些内容进行集成。公司决定封装自己产品SDK,现在把经验总结如下:

    简介:

    库分为静态库和动态库,静态库库一般以.a或者.framework为后缀名,而动态库的后缀一般为.tbd(以前是.dylib)和.framework。
    静态库:调用时会被完整的复制到可执行文件中,被多次使用就有多份拷贝。
    动态库:调用时不会复制,系统只加载一次,多个程序共用程序。运行时由系统动态加载到内存,节省内存。(系统的库差不多都是动态库吧,注意⚠️:如果使用自己封装的动态库,会被拒)。

    步骤:

    一、创建静态库:
    创建静态库 1

    注意:默认创建的是动态库,需要到,Build Settings 里面修改 Mach-O Type 为 static Library


    创建静态库 2
    创建静态库 3
    创建静态库 4
    二、调试静态库:
    坑一、刚开始我们发现,只是创建静态库时,还要新建一个工程Demo来调试我们的库(上级搞的),我就觉得这样很不方便,感觉可以使用一个工程就能搞定的。
    解决办法:
    调试步骤图 1
    坑二、还需要进行一步才能进行库的调试
    调试步骤图 2
    到此,你会发现我们的库可以进行调试了,而且不用先编译我们的库,直接运行这个 Demo 就可以直接调试了,非常方便。(去试试吧~~)

    这样子就差不多完成了。
    如果想要让模拟器和真机通用一个静态库,我们可以使用终端命令来实现(也可以参考这个博客)。注意⚠️:framework静态库合并的不是framework,而是framework下的二进制文件,命令为:

    要合并的东西图
    lipo -create "真机版本路径" "模拟器版本路径" -output "合并后的文件路径"
    
    三、上传pod

    这个博客挺好cocoapods上传.podspec文件流程,我也是看这个博客上传的,我觉得最主要的就是 podspec 文件的配置,下面我只进行对根据博客进行商城遇到的问题进行总结,其他大家可以看他的博客。

    四步:
    1、 创建 git 远程仓库
    2、上传文件到刚刚新建的 git 仓库
    1. git add .   添加当前文件夹下的所有文件到git仓库缓存区
    2. git status   显示代码状态
    3. git commit -m '注释'  提交代码加注释, 提交到本地git仓库
    4. git log    看本地git仓库的提交记录
    5. git push origin master   推送到远程master分支
    
    //打 tag 
    git tag -a '0.0.1' -m '新增0.0.1tag'   在本地仓库增加0.0.1tag。
    git push --tags   提交tag到远程仓库。
    
    
    3、配置 .podspec 文件

    3.1.创建

    pod spec create 工程名 //一般为工程名
    

    3.2.配置,如果想简单点,去仿别人的 podspec 文件

    Pod::Spec.new do |s|
    
      s.name         = "XXX" //名称
      s.version      = "0.0.1"  //⚠️注意:版本号,也是tag(必须和tag版本一致)
      s.summary      = "XXX summary" //Tools 的总结
      s.description  = <<-DESC XXX的描述,一些介绍。DESC //这里的描述,必须比s.summary的长度要长。
      s.homepage     = "https://github.com/xxx/XXX" //远程仓库的首页地址
      s.license      = "MIT"  //MIT
      s.author       = { "xxx" => "xxxxxx@qq.com" } //作者,邮箱
      s.platform     = :ios, "5.0"
      s.source       = { :git => "https://github.com/xxxx/xxx.git", :tag => s.version } //git => 远程仓库的clone地址, tag取版本号就行
      s.requires_arc = true //ARC
      s.source_files  = "Classes", "Classes/**/*.{h,m}" //包含文件,Classes文件下的所有.h.m
      s.resources = "XXX/XXXUIResource.bundle" //多个资源用逗号隔开 (某个文件夹下/某个资源文件 , 下同)
      //
      s.ios.preserve_paths = 'XXX/xxx.a'//设置.a文件,多个用逗号隔开
      s.vendored_frameworks = 'XXX/XXXFramework.framework'//设置了framework,才会显示在文件夹中
      s.frameworks = "AudioToolbox", "AVFoundation", "CoreGraphics"//引用的系统库
      s.libraries = "iconv", "xml2", "bz2", "z", "stdc++", "c++"//引用一些lib库
    
      s.requires_arc = true //ARC
      s.dependency "MJRefresh" //引用的第三方库,配置,多个就写多个
      s.dependency "MJExtention"
    
    
    end
    

    3.3.检验 podspec

    pod lib lint XXX --allow-warnings //加后面的参数比较容易成功
    

    检验成功记得,上传到 远程 git 仓库

    git add .
    git commit -m '增加Tools.podspec文件'
    git push origin master
    
    4.注册cocoapods trunk,按照提示操作即可

    4.1 注册 trunk

    pod trunk register [EMAIL] [USERNAME]  //邮箱,名称
    pod trunk register xxx@qq.com 'xxx'
    

    4.2 上传 xxx.podspec文件到git的Specs仓库

    pod trunk push xxx.podspec --allow-warnings //加后面的参数比较容易成功
    
    最后搜索并使用我们的库
    终端上搜索 XXX,这个时候是搜索不到的。
    pod search XXX
    需要删除 : 资源库->Caches->CocoaPods中的search_index(索引文件),然后在终端pod search XXX,这个等待时间比较久,因为需要重新生成索引文件。
    
    出现的问题汇总

    1.xib 找不到,不能放在framework目录下面,手动加入的framework是可以的。pod 的话要加在bundle 里面。

    1. 动态库链接,还不知道怎么配,还需要手动添加,如有知道请赐教,谢谢🙏。我看了这个博客能做到,但是自己尝试并没有成功。
      CocoaPods 动/静态库混用封装组件化

    相关文章

      网友评论

          本文标题:iOS SDK 开发之静态库framework开发、调试、及上传

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