CocoaPods和Podfile语法

CocoaPods是什么?

CocoaPods是专门为iOS工程提供对第三方库的依赖的管理工具,通过CocoaPods,我们可以更方便地管理每个第三方库的版本,而且不需要我们做太多的配置。直观、集中和自动化地管理我们项目的第三方库。

CocoaPods是使用 Ruby 语言编写的一个作为 iOS 的包管理工具,而RubyGems是 Ruby 的包管理工具。安装CocoaPods需要包管理工具RubyGems安装,而RubyGems是 Mac 自带的工具。关于RubyGems的更多信息,可以参考官方文档。不过,RubyGems中的 Gems 在国内访问速度很慢,不过可以使用Ruby China。如果你想大体了解 Ruby,可以看这篇文章Ruby。读到这里相信你对安装CocoaPods已经有了一定的了解。

CocoaPods会被安装到/Users/wangsuyan/.cocoapods/repos

默认情况下,Pods 项目最终会编译成一个名为 libPods.a 的文件,主项目只需要依赖这个 .a 文件即可。 use_frameworks!会编译成一个Pods.framework的文件,而不是.a文件

pod 'Reveal-iOS-SDK', '~> 1.6.2', :configurations => ['Debug']可以指定debug

cocospods语法:

platform:ios,'8.0':

指定平台和最低版本

inhibit_all_warnings!:

忽略所有警告

workspace:

 ‘项目空间名’: 指定项目空间名

xcodeproj :

‘工程文件名’:指定xcodeproj工程文件名

pod指定版本:

pod 'Objection' :什么版本都行一般是最新版本

pod 'Objection','0.9'

'> 0.1' 高于0.1的任何版本

'>= 0.1' 版本0.1或更高版本

'< 0.1' 低于0.1的任何版本

'<= 0.1' 版本0.1或更低的版本

~ > : 从指定版本到倒数第二位版本号升1为止,比如 ‘~> 1.2.1’是指 1.2.1 <= 版本 < 1.3.0

'~> 0.1.2' 版本0.1.2和0.2版本之间的任意版本,不包括0.2和比0.2更高的版本

'~> 0.1' 版本0.1和版本1.0之间的任意版本,不包括1.0和比1.0更高的版本

'~> 0' 版本0或比版本0更高的版本,这基本上和不指定版本号的效果是一样的。

指定本地路径:

pod  'AFNetworking', :path=>'~/Documents/AFNetworking'

指定主分支:

pod'AFNetworking', :git=>'https://github.com/gowalla/AFNetworking.git'

指定分支:

pod 'AFNetworking', :git=>'https://github.com/gowalla/AFNetworking.git', :branch=>'dev'

指定提交版本:

pod'AFNetworking', :git=>'https://github.com/gowalla/AFNetworking.git', :commit=>'082f8319af'

使用指定的tag:

pod'AFNetworking', :git=>'https://github.com/gowalla/AFNetworking.git', :tag=>'0.7.0'

Podfile.lock文件:

当团队中的某个人执行完pod install命令后,生成的Podfile.lock文件就记录下了当时最新Pods依赖库的版本,这时团队中的其它人check下来这份包含Podfile.lock文件的工程以后,再去执行pod install命令时,获取下来的Pods依赖库的版本就和最开始用户获取到的版本一致。如果没有Podfile.lock文件,后续所有用户执行pod install命令都会获取最新版本的SBJson,这就有可能造成同一个团队使用的依赖库版本不一致, 这对团队协作来说绝对是个灾难!


pod本地私有库:

pod本地库目录结构

souce包括两个文件:PHandle.h,PHandle.m  定义了+(void)PLog{

    NSLog(@"csbbbbbbb");

}

download.podspec的生成:pod spec create download ,修改.podspec文件使pod能找到source里面的文件

pod导入.podspec路径:pod 'download', :path => './LocalLib/download/' 

执行pod install即可完成pod本地私有库

注意:pod 'download', :path => './LocalLib/download/'  命令要在./LocalLib/download/下有一个名字为download的podspec文件,或者path直接是.podspec的全路径(:path => './LocalLib/download/xxx.podspec')

.podspec:

s.source_files  = "*.{h,m}" //源码文件类型

s.source  = { :git => "", :tag => "0.01" } //git 地址

s.dependency'AFNetworking','~> 1.0' //依赖的第三方

s.requires_arc = true //是否支持arc

  s.frameworks = "QuartzCore", "CoreData" //使用的框架

s.libraries ='xml2','z'    //z表示libz.tdb,后缀不需要,lib开头的省略lib,libraries 比如libz,sqlite3.0等,多个用逗号分开

s.vendored_frameworks ='MyFramework.framework','TheirFramework.framework' //己的或者第三方framework,比qqSDK的TencentOpenAPI.framework

s.vendored_libraries ='libProj4.a','libJavaScriptCore.a'  //自己的或者第三方.a文件,比如微信SDK的.a文件

s.resources = ['Images/*.png','Sounds/*'] //资源文件

pod远程私有库:

1.创建远程私有索引库(远程存放索引):

 pod repo 查看本地索引库

pod repo add LTPodspecs https://gitee.com/HeroHY/LTPodspecs.git

2.创建基础组件库


创建一个空的项目MyProjectBase

在桌面创建一个空的文件夹podtest用来存放文件

在podtest下执行:pod lib create MyProjectBase

编写一个PHLog文件,它的类方法TestLog输出XXX内容放在class下

执行pod install测试

依次执行下列命令:

$ git add .

$ git commit -m '编辑基础库文件'

$ git remote add origin https://gitee.com/HeroHY/MyProjectBase.git (将本地库与远程代码仓库进行关联)

$ git push origin master  (提交到远程仓库)

$ git tag '0.1.0' (要与MyProjectBase.podspec文件中的tag值保持一致)

$ git push --tags(将tag提交到远程)

然后验证:pod lib lint --allow-warnings

pod spec lint --allow-warnings

最后将podspec文件提交到本地的私有索引库

pod repo push LTPodspecs MyProjectBase.podspec

3.编写podfile

source 'https://gitee.com/HeroHY/LTPodspecs.git'

source 'https://github.com/CocoaPods/Specs.git'

target 'test' do

pod 'MyProjectBase'

end

总结:cocospods根据podspec文件来导入文件和导入依赖

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容