




已阅读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_35 8970353.shtml cocoaPods 常用使用命令 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.html tip: 引用自己的 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 供 项目引用; 自定义类库配置文件.podspec podspec 的语法参考: /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.0 sss.ios.private_header_files = NetEasePatch/Wax/extensions/*/*.h sss.ios.source_files = NetEasePatch/Wax/extensions/*/*.h,m,c sss.libraries = “xml2“ sss.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 “ZipArchive“ end 2. 自定义类库测试 创建一个 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/podspec 2. 在本地 cocoaPods 安装目录下创建私有 Repo 创建 repo: podspec 仓库名 $ pod repo add podspec /commonlibraryios/podspec.git 注: 该命令主要可以用来和线上仓库 git 连接,将 git 下的所有公共库的配 置信息加载到本地的 repo 仓库 检查本地的私有 repo 是否建立成功, 如果创建成功,可以在如下目录中看 到 git 上的类库 podspec 文件; $ cd /.cocoapods/repos/REPO_NAME $ pod repo lint . 删除本地 repo: $ pod repo remove podspec 更新本地 repo: $ pod repo update podspec 可以通过 pod repo help 查看相关命令; 3. 如何添加公共类库到私有 repo 仓库: a) 线上私有 repo 的目录层次需要按照如下标准: 1. Specs 2. SPEC_NAME 3. VERSION 4. SPEC_NAME.podspec b) 我们建立的公共类库的 podspec 文件提交地址如下: /commonlibraryios/podspec.git c) 首先要保证公共类库的 git 里需要指定 LICENSE; 如果新创建一个公共类库: 可以通过 pod 命令完成:pod lib creat libname, 可以按照模版建立 License 和 podspec 文件 如果是以前已经建好的一个类库: 需要手动拷贝 LICENSE 文件,并在 podspec 文件中指定,否则添加到本地 repo 中会有 warning,添加不进去; d) 更新 LICNECE 和代码,记得需要进行 tag 标记 当更新 LICENCE 或者提交代码之后,一定要打 tag 标记,并修改 podspec 文 件中 source tag; Git add * -A git tag 1.0.2 git 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.0 git push origin :refs/tags/1.0.0 f) 如果本地添加成功, 再将 podspec 文件提交到 git 线上管理; 如何使用私有 repo 仓库 1. Clone 线上 repo 仓库到本地 $ pod repo add podspec /commonlibraryios/podspec.git 第一次创建可以自动下载线上私有仓库 git 中的所有公共类库; 2. 更新线上 repo 仓库地址: 更新所有 repo(包括 master): pod repo update 更新某个 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_files 2. 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 end 3. 自定义库文件层次太深问题的解决 当遇到自定义库工程的目录时,我们一般时通过 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/json end 4. 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 重构 对于以前直接引入第三方库的代码,建议如下流程进行: 比如说 JSonkit 1. 先通过 pod search JsonKit 查询 pod 公共库中是否存在该库,如果存在,最新版 本是多少,也可以直接通过 git 地址去 github 上查看第三方库的源文件,印证一 下该库和本地引用的库是否一致; 如果一致的话,直接将 pod 引用方法 复制过来即可; 2. 每次链接一个库,pod install/update 之后, 对 workspace 的工程进行编译,看 是否报错,如果不报错,继续下一项; 如果有错,需要检查报错项,有可能时因为版本升级之后,调用方法变了,我们 需要改变; 也有可能是之前版本不支持 ARC,新版本支持 ARC,需要进行调用调整; 如果改动比较大,可以看时间是否充裕,如果不充裕,跳过; 如果充裕修改工程代码, 运行看相关界面和功能是否正常; 3. 当公用库引用完成之后,我们可以把项目中提炼出得一些公共功能代码独立成一 个类库,具体方法见上面的“自定义仓库配置文件”部分, 先在本地测试,和工程调用测试通过; 通过之后,上传代码到 git/svn,或其他版本管理工具;并对公共类库进行文档说明: 主要功能,如何调用? 将工程中得 Podfile 的调用全部改成线上 git/svn 地址,看整个项目是否能够正确 运行,如果运行成功,项目重构完成; 更新公共类库 git 管理列表;(如下所示) 电影票重构 Podfile: platform:ios,5.0 inhibit_all_warnings! #native test #pod NetEasePatch, :path = /Documents/neteaseGit/neteasepatch # #public common lib # pod OCMock pod SDWebImage pod SD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年福建省晋江市社会保险中心招募青年见习人员2人考前自测高频考点模拟试题完整答案详解
- 2025福建省水利投资开发集团有限公司招聘1人模拟试卷及答案详解(夺冠系列)
- 2025年潍坊市教育局所属学校公开招聘工作人员(77人)模拟试卷附答案详解(黄金题型)
- 2025河南开封市兰考县不动产登记中心就业见习生招聘6人模拟试卷附答案详解(考试直接用)
- 宪法知识竞赛题库及答案
- 2025picc置管试题及答案
- 班级爱心捐书活动
- 2025年医疗器械经营质量管理规范考试卷附答案
- 点钞人员安全培训课件
- 点金石课件教学课件
- 企业防台风安全培训课件
- 2025年全国消防设施操作员中级理论考试(单选上)
- 产品设计调研课件
- 2024年黑龙江省《辅警招聘考试必刷500题》考试题库附完整答案
- 高校实验室安全基础课(实验室准入教育)学习通网课章节测试答案
- 数据库应用技术-第三次形考作业(第10章~第11章)-国开-参考资料
- 液压泵站使用说明书
- 职工三级安全教育卡模版
- 化工企业物料编码规则物料分类清晰、编码简短、容易识别
- 儿科学腹泻病
- CT介入学及CT引导下肺穿活检术课件
评论
0/150
提交评论