




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CocoaPods第三方库集成管理应用CocoaPods安装1. 检查是否安装xcode开发工具打开终端,运行:xcode-select - install如果已安装,输出xcode-select的使用命令,如果未安装,会自动跳出安装程序,进行安装即可;注:如果不安装,安装cocoaPods 的building native extension 阶段报错;2. 更新gem在终端中运行: gem v , ruby v , 检查当前gem和ruby的版本;最好将gem为最新版本,防止安装cocoaPods出现版本太old的意外情况;sudo gem update -system如果用国外的源更新较慢的话,可以换成淘宝的源gem source -remove /gem source a /可以通过gem source l 查看当前的gem源3. 安装cocoaPods和pod命令行环境安装:sudo gem install cocoapods设置cocoaPods环境: pod setup安装过程中可能比较慢,请耐心等待,安装完成之后,使用pod list 验证是否安装成功,如果安装成功,该命令可以显示当前cocoaPod公共库中所有可以调用的类库名称和版本号;详细安装步骤:/content/14/0309/10/11029609_358970353.shtmlcocoaPods常用使用命令1. 第一次运行: pod help 查看各个命令的用途2. 查看你的工程库中的某个第三方库是否在pod的仓库中:命令:pod search *可以看到最新的版本信息和source地址:- SDWebImage (3.7.1) Asynchronous image downloader with cache support with an UIImageView category. pod SDWebImage, 3.7.1 - Homepage: /rs/SDWebImage - Source: /rs/SDWebImage.git - Versions: 3.7.1, 3.7.0, 3.6, 3.5.4, 3.5.2, 3.5.1, 3.5, 3.4, 3.3, 3.2, 3.1, 3.0, 2.7.4, 2.7, 2.6, 2.5, 2.4 master repo - Sub specs: - SDWebImage/Core (3.7.1) - SDWebImage/MapKit (3.7.1)- SDWebImage/WebP (3.7.1)3. 创建Podfile 文件具体podfile文件编写参考:/syntax/podfile.htmltip:引用自己的git libray:podNetEasePatch,:git= /huipang/neteasepatch.git引用cocoaPods库时: pod SDWebImage 3.1.1注意:最好是加上版本号,防止版本升级造成工程编译通不过;4. 创建pod工作空间:编写完Podfile文件之后:第一次运行: pod install以后更新运行: pod update创建之后会生成三部分文件: Pods文件夹,*.xcworkspace, Podfile.lock.xcworkspace工作空间把第三方库先分别生成静态库,然后再生成一个libPods.a供项目引用;自定义类库配置文件.podspecpodspec 的语法参考:/syntax/podspec.html注意:当你引用cocoaPods第三方库的时候,你能够在其git工程中发现.podspec文件,开始不会写的时候,可以多去第三方库的git地址上去看看podspec文件的写法;当我们自己写的公共库,我们可以独立出类库供多个项目引用;这就需要我们去配置.podspec文件;1. 首先创建podspec文件pod lib create pod name然后编辑从工程文件中独立公共文件出来建立一个工程,编辑配置library引用信息, 具体编辑看参考地址下面是一个自定义类库的示例:Pod:Spec.new do |s| = NetEasePatch s.version = 1.0.0 s.license = MIT s.summary = NetEasePatch is a useful library to use s.homepage = /huipang/neteasepatch.git s.authors = huipang = s.source = :git = /huipang/neteasepatch.git, :tag = 1.0.0 s.requires_arc = false s.platform = :ios s.subspec patch do |ss| ss.ios.deployment_target = 5.0 ss.ios.public_header_files = NetEasePatch/patch/*.h ss.ios.source_files = NetEasePatch/patch end s.subspec Wax do |ss| ss.ios.deployment_target = 5.0 ss.ios.public_header_files = NetEasePatch/Wax/*.h ss.ios.source_files = NetEasePatch/Wax ss.subspec lua do |sss| sss.ios.deployment_target = 5.0 sss.ios.private_header_files = NetEasePatch/Wax/lua/*.h sss.ios.source_files = NetEasePatch/Wax/lua end ss.subspec extensions do |sss| sss.ios.deployment_target = 5.0sss.ios.private_header_files = NetEasePatch/Wax/extensions/*/*.h sss.ios.source_files = NetEasePatch/Wax/extensions/*/*.h,m,csss.libraries = xml2sss.xcconfig = HEADER_SEARCH_PATHS = $SDK_DIR/usr/include/libxml2 #sss.ios.exclude_files = NetEasePatch/Wax/extensions/json end end s.frameworks = UIKit, CoreGraphics, Foundation s.ios.libraries = z s.dependency ZipArchiveend2. 自定义类库测试创建一个demo工程,在demo工程下建立Podfile文件引用本地的类库,如下所示:podNetEasePatch,:path= /Documents/neteaseGit/neteasepatch编译demo工程, 如果不报错,公共类库建立测试完毕;tip:公共类库尽量做到不要用调用者去配置build setting; 私有的头文件尽量不要放在调用文件的头文件,放在实现文件里面(m文件,c文件)3. 本地类库上传gitlab管理将本地测试通过的类库工程上传gitlab管理;创建私有repo仓库好处:创建私有Rep仓库,可以对我们自己创建的公共类库也能像cocoaPods公共类库一样进行查询(pod search *)和引用(pod *)。具体创建方法可以参考官方文档:/making/private-cocoapods.html如何创建私有repo仓库1. 创建一个类库版本管理的存放git,我以ios公共类库为例:/commonlibraryios/podspec2. 在本地cocoaPods安装目录下创建私有Repo创建repo: podspec 仓库名$ podrepoaddpodspec/commonlibraryios/podspec.git 注: 该命令主要可以用来和线上仓库git连接,将git下的所有公共库的配置信息加载到本地的repo仓库检查本地的私有repo是否建立成功,如果创建成功,可以在如下目录中看到git上的类库podspec文件;$ cd /.cocoapods/repos/REPO_NAME$ pod repo lint .删除本地repo: $ podreporemovepodspec 更新本地repo:$ podrepoupdate podspec 可以通过 pod repo help 查看相关命令;3. 如何添加公共类库到私有repo仓库:a) 线上私有repo的目录层次需要按照如下标准:1. Specs2. SPEC_NAME3. VERSION4. SPEC_NAME.podspecb) 我们建立的公共类库的podspec文件提交地址如下:/commonlibraryios/podspec.gitc) 首先要保证公共类库的git里需要指定LICENSE;如果新创建一个公共类库:可以通过pod命令完成:pod lib creat libname, 可以按照模版建立License和podspec文件如果是以前已经建好的一个类库:需要手动拷贝LICENSE文件,并在podspec文件中指定,否则添加到本地repo中会有warning,添加不进去;d) 更新LICNECE和代码,记得需要进行tag标记当更新LICENCE或者提交代码之后,一定要打tag标记,并修改podspec文件中source tag;Git add * -Agit tag 1.0.2git push -tags e) 使用如下命令对创建的类库pospec文件进行xcode编译验证,验证通过之后,会自动将podspec类库添加到本地的私有repo中;$ pod repo push REPO_NAME SPEC_NAME.podspec此命令会对podspec文件进行验证,特别是版本信息和LICENCE文件;注意:一般提交类库的时候一定要先在这一步对类库进行验证,修改类库结构和报错;因为验证的时候必须打上tag,为了保证tag版本,可以使用拿1.0.0版本测试git tag -d 1.0.0git push origin :refs/tags/1.0.0f) 如果本地添加成功, 再将podspec 文件提交到git线上管理;如何使用私有repo仓库1. Clone线上repo仓库到本地$ podrepoaddpodspec/commonlibraryios/podspec.git 第一次创建可以自动下载线上私有仓库git中的所有公共类库;2. 更新线上repo仓库地址:更新所有repo(包括master): podrepoupdate 更新某个repo : pod repo update podspec公共类库私有repo地址:/commonlibraryios/podspec.git目前为止的公共类库包括:使用cocoaPods的常用问题:1. 自定义库公开文件的配置s.ios.public_header_files = URS/URSAuth.h, URS/URSARC.h在.podspec文件中配置public_header_files,配置的文件可以在使用pod的项目中像调用系统库一样使用, 如下所示:#import 注意: s.ios.private_header_files 和public_header_files 是相对立的,只需要配置其中一个就可以了;另外一个等于s.ios.source_files public_header_files = private_header_files2. default_subspec 的定义问题 s.default_subspec = Core 表示自动加载Core的subspec, 其他的subspec一般都是在default_subspec基础上发展起来的;如下所示:注意:如果定义了default_subspec,pod时只加载默认的类库,subspec需要继续pod才能下载,如下所示的subspec,使用: pod SDWebImage/MapKit 如果自定义类库中subspec,最好在description中写好subspec的调用说明; s.subspecMapKitdo|mk| mk.source_files = SDWebImage/MKAnnotationView+WebCache.* mk.framework = MapKit mk.dependency SDWebImage/Core end3. 自定义库文件层次太深问题的解决当遇到自定义库工程的目录时,我们一般时通过subspec来解决,如下所示:s.subspec patch do |ss| ss.ios.deployment_target = 5.0 ss.ios.public_header_files = NetEasePatch/patch/*.h ss.ios.source_files = NetEasePatch/patch end但当目录层次较浅的时候,我们可以通过嵌套的subspec来实现,但是当目录层次较深的时候,subspec嵌套较多,但其实没有必要,在xcode工程里面,不管引用的目录层次多深,直接引用头文件也能够调用到,所以我们用下面的方法只引用source文件而不用依次建立目录: ss.subspec extensions do |sss| sss.ios.deployment_target = 5.0 sss.ios.private_header_files = NetEasePatch/Wax/extensions/*/*.h sss.ios.source_files = NetEasePatch/Wax/extensions/*/*.h,m,c sss.libraries = xml2# sss.ios.exclude_files = NetEasePatch/Wax/extensions/jsonend4. xcode工程无法找到系统库头文件的问题, 需要手动配置xcode项目build setting项的问题比如,当引用xml2库的时候:sss.libraries = xml2会提示找不到系统的libxml2.h 文件,需要在pod工程文件的Header search Path 中,加入$SDK_DIR/usr/include/libxml2这种情况我们可以通过pod配置选项完成:sss.xcconfig = HEADER_SEARCH_PATHS = $SDK_DIR/usr/include/libxml2 这样会在引入的类库target的Header Search Path中配置:$PODS_NETEASEPATCH_HEADER_SEARCH_PATHS在最后总的pod target中的Header Search Path中配置:$SDK_DIR/usr/include/libxml2电影票ios项目pod重构对于以前直接引入第三方库的代码,建议如下流程进行:比如说JSonkit1. 先通过pod search JsonKit 查询pod公共库中是否存在该库,如果存在,最新版本是多少,也可以直接通过git地址去github上查看第三方库的源文件,印证一下该库和本地引用的库是否一致;如果一致的话,直接将pod引用方法 复制过来即可;2. 每次链接一个库,pod install/update之后, 对workspace的工程进行编译,看是否报错,如果不报错,继续下一项; 如果有错,需要检查报错项,有可能时因为版本升级之后,调用方法变了,我们需要改变; 也有可能是之前版本不支持ARC,新版本支持ARC,需要进行调用调整;如果改动比较大,可以看时间是否充裕,如果不充裕,跳过; 如果充裕修改工程代码,运行看相关界面和功能是否正常;3. 当公用库引用完成之后,我们可以把项目中提炼出得一些公共功能代码独立成一个类库,具体方法见上面的“自定义仓库配置文件”部分, l 先在本地测试,和工程调用测试通过;l 通过之后,上传代码到git/svn,或其他版本管理工具;并对公共类库进行文档说明:主要功能,如何调用?l 将工程中得 Podfile的调用全部改成线上git/svn地址,看整个项目是否能够正确运行,如果运行成功,项目重构完成;l 更新公共类库git管理列表;(如下所示)电影票重构Podfile:platform:ios,5.0inhibit_all_warnings!#native test#pod NetEasePatch, :path = /Documents/neteaseGit/neteasepatch#public common lib#pod OCMockpod SDWebImagepod SDWebImage-ProgressView, 0.4.0po
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学生职业规划大赛《汽车服务工程专业》生涯发展展示
- 新质生产力知识
- 孤立性直肠溃疡综合征的临床护理
- 手术室医用气体管理
- 长征胜利八十周年主题发言稿模版
- 语文教师考试试题及答案
- 银行在线面试题目及答案
- 水系灭火剂生产工艺流程图
- 学校消防广播测试题及答案
- 宣传消防面试题及答案
- 新生儿消化道出血的护理查房
- 电梯维护保养规则(TSG T5002-2017)
- 六年级择校考试卷
- 髂总动脉瘤的护理查房
- 红色美术鉴赏智慧树知到期末考试答案2024年
- 量化考研-2024中国大学生考研白皮书-新东方
- 施工固定总价合同
- 《施工现场消防》课件
- T-NMAAA.0002-2021 营运机动车停运损失鉴定评估规范
- 七年级下册语文必背常考全册重点知识汇总(打印版)
- 血液透析护理质量敏感指标
评论
0/150
提交评论