- Repository name: 仓库名称,这里写上我们的依赖库名字 O2View ,必填。
- Description: 仓库的描述信息,可选。
- Public or Private: 仓库的公开性,开源的话选 Public 。 如果是公司内部使用的话这里推荐大家使用私有的仓库,但是 github 的私有仓库是要收费的 $7/month (壕请无视 - -!)。大部分公司都是有自己的git服务器,不过一般只能在公司内网使用,或者可以选择Gitlab,Coding, Bitbucket任意一种。
二:添加我们在教程一中创建的工程 工程名称 的spec文件到上面创建的 工程名称 库中去
(PS:由于这个工程名称是采用pod lib create 创建的,本身已经建立了podspec文件了.当然,如果你的工程是已经建立好了的,可以采用命令 pod spec create specName来创建,官方创建spec文件的文档http://guides.cocoapods.org/making/specs-and-specs-repo.html,如果带有子库的化,podspec文件将会变得有些复杂
三.私有库中添加资源(图片、音视频等)
方法共有三种:
-
第一种
spec.resources = ["Images/*.png", "Sounds/*"]
但是这些资源会在打包的时候直接拷贝的app的Bundle中,这样说不定会和其它资源产生命名冲突
-
第二种
spec.resource = "Resources/MYLibrary.bundle"
把资源都放在bundle中,然后打包时候这个bundle会直接拷贝进app的mainBundle中。使用的时候在mainBundle中查找这个bundle然后再搜索具体资源
NSURL *bundleURL = [[NSBundle mainBundle] URLForResource:@"JZShare" withExtension:@"bundle"]; NSBundle *bundle = [NSBundle bundleWithURL:bundleURL]; UIImage *img = [UIImage imageNamed:icon inBundle:bundle compatibleWithTraitCollection:nil];
- 第三种
这种方法利用 framework 的命名空间,有效防止了资源冲突。spec.resource_bundles = { 'MyLibrary' => ['Resources/*.png'], 'OtherResources' => ['OtherResources/*.png'] }
使用方法是先拿到最外面的 bundle,然后再去找下面指定名字 的 bundle 对象,再搜索具体资源NSBundle *bundle = [NSBundle bundleForClass:[MYSomeClass class]]; NSURL *bundleURL = [bundle URLForResource:@"MyLibrary" withExtension:@"bundle"]; NSBundle *resourceBundle = [NSBundle bundleWithURL: bundleURL]; UIImage *img = [UIImage imageNamed:icon inBundle:bundle compatibleWithTraitCollection:nil];
四.如果私有库添加了静态库或者dependency用了静态库
那么执行pod lib lint还有pod spec lint时候需要加上—user-libraries选项
否则会出现'The 'Pods' target has transitive dependencies错误
命令可如下:
pod lib lint --verbose --allow-warnings --no-clean --sources='仓库地址,https://github.com/CocoaPods/Specs.git' --skip-import-validation
五.如果私有库只引用其他库的subspec
只需要依赖想依赖的subspec,不用管主spec(因为依赖subspec必然要依赖主spec)
六.到了最关键的一步 上述的subspec文件如果写好了 开始执行上传的过程,上传的过程可能出现的问题就是 上传使用http的仓库地址可用 ,但是使用SSH的地址失败,那么就需要做一个操作(克隆远程仓库时,用env命令设置GIT_SSL_NO_VERIFY环境变量为"ture",并同时调用正常的git clone命令。完整的命令如下:)
- env GIT_SSL_NO_VERIFY=true git clone https://<host_name/git/project.git