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

2019-04-12  本文已影响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 动/静态库混用封装组件化
上一篇下一篇

猜你喜欢

热点阅读