一、如何创建一个pod
1、cd到你期望存放项目的路径
2、在终端输入:pod lib create FALiveSDK (其中FALiveSDK是你创建的pod仓库的名字)
3、终端出现选项, (> 之后表示我选的选项)
整个过程如下图所示
生成的项目目录详情如下图
真正的pod仓库的代码,是FALiveSDK目录,其中Classes是存放代码的目录,Assets是存放图片资源的目录
至此,我们已经简单的完成了一个pod仓库的创建了。只需要把我们需要加入pod管理的代码加入到Classes,然后cd到Example,执行一次pod install,结束之后打开Example里的.xcworkspace,就可以看到加到pod仓库的代码了。
二、podspec文件
1、官方文档地址:
https://guides.cocoapods.org/syntax/podspec.html
2、spec是什么
spec描述了一个pod库的版本。它包括有关应从何处获取源、使用什么文件、要应用的构建设置以及其他一般元数据(如其名称、版本和描述)的详细信息。
这里主要讲述几个重要的字段:
s.name、s.version
s.name : pod仓库的名称,跟podfile里的pod是一致的
s.version: '0.1.0',指定当前pod仓库的版本号,使用的时候,在podfile里可以指定pod的版本,如下:
eg: pod "FALiveSDK", '0.1.0'
s.source
远程仓库的源地址,这里是:'http://mgit.kugou.net/ios-watchgroup/FALiveSDK.git'
s.ios.deployment_target
因为我们指定的是iOS平台,所以是s.ios.deployment_target。如果是macOS,那就是s.osx.deployment_target,这里是我们在创建pod的时候就指定好的了,所以不需要修改,
s.ios.deployment_target = '9.0',代表支持的系统版本是iOS9.0(含及以上)
s.source_files
表示加入到pod仓库的所有文件
s.source_files = 'FALiveSDK/**/*.{c,h,hpp,m,mm,cpp}'
表示在FALiveSDK目录下的所有子目录下的.c .h .hpp .m .mm .cpp类型的文件,都属于pod仓库的源文件,都会加入到pod管理
s.private_header_files
表示私有文件包含哪些
s.private_header_files = 'FALiveSDK/**/*.{c,h,hpp,m,mm,cpp}'
此处表示s.source_files文件下都属于私有文件,你也可以选定某些文件路径,作为具体的私有文件
s.resources
资源路径可以加到这里来,可以把.plist文件,.json文件都加到这里来
s.resources = ['FALiveSDK/FanXing/Resource/file/*.*','FALiveSDK/FanXing/DebugURLCanReplaceConfig.plist','FALiveSDK/FanXing/General/Helper/FXAppConfig.plist','FALiveSDK/FanXing/Section/Setting/Model/FXSettingConfig.plist','FALiveSDK/FanXing/Section/Setting/Model/messageSetConfig.plist','FALiveSDK/FanXing/Section/Setting/Model/settingConfig.plist','FALiveSDK/FanXing/Section/Setting/Model/timmerSetConfig.plist','FALiveSDK/FAWatchSDK/Provider/MTModules.plist','FALiveSDK/FAWatchSDK/Provider/MTNetwork.plist']
s.prefix_header_file
全局声明的pch文件,这里的例子是PrefixHeader.pch
s.prefix_header_file = 'FALiveSDK/FanXing/Resource/PrefixHeader.pch'
s.static_framework
声明该pod仓库是静态framework,这点很重要,因为动态的framework不能依赖静态的framework,如果出现以下错误
说明pod仓库中,你的动态framwork依赖了静态的framework。所以需要把动态framwork声明为静态
s.static_framework = true
s.dependency
表明FALiveSDK依赖的第三方库有哪些
s.dependency 'FFmpeg' 依赖了FFmpeg
s.libraries
静态库,一般都是.a文件,这里是系统的依赖.a文件
s.libraries = 'iconv', 'bz2','crypto','sqlite3.0','sqlite3','z','stdc++','c++','icucore','xml2'
s.requires_arc
代码的内存管理方式是否是ARC
s.requires_arc = true/faults
s.subspec
pod的子仓库,比如有写文件是ARC的,有些是非ARC的,就可以通过subspec的方式,区分管理文件
s.subspec 'FAFrameWork' do |fr|
fr.vendored_frameworks = no_framework
fr.vendored_libraries = no_static_a
fr.requires_arc = true
end