制作cocoapods库

脑壳大,写了个cocoapods 已经上了 后面增加内容,搞忘了以前怎么写的了  还是在上面记录哈别到时候更新的还是忘了 

1.github上面新建一个项目;

2.git clone 到本地;

3.cd 到当前目录 创建.podspes文件 for example  JJTools.podspec;

$ pod spec create JJTools;

4.在目录中创建工程(此处命名为JJTools),创建共享的类Classes;

5.编辑podspec文件;


编辑podspec

6.验证:pod lib lint JJTools.podspec --verbose. //只验证本地

            pod spec lint JJTools.podspec --verbose//本地和线上一起验证 推荐这种

7.打tag,push。这里tag加v例如

$ git tag 'v1.1.1'

$git push --tags

$git push origin master

8.注册pod trunk register xxx@xx'Your name' --description='macbook pro'//已经注册略过

9.发布:pod trunk push JJTools.podspec --allow-warnings


push 成功


pod search

10.删除三方库//这个还未验证过

pod trunk delete JJTools0.0.1

pod trunk deprecate JJTools

podsetup

10.清除缓存:pod cache clean --all

以下说几个遇到的坑和经验,供自己以后回顾和道友一起看:

1.确保自己的项目能有run起来,前期不知道咋的build没问题但是run的时候始终没反应导致最后trunk的时候一直报这个错误:


returned an unsuccessful exit code

2.-Wnon-modular-include-in-framework-module

这个错误出现的时候网上的道友说的是这样设置发现并没有什么卵用


这样设置

最后发现在podspec里面这样设置就可以了

s.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }

3.关于文件夹分层和头文件的设置

我看了很久如果里面不分层的话,这样就直接包括了所有

s.source_files = 'JJTools/JJTools/Classes/**/*'

分层的话,

s.source_files = 'JJTools/JJTools/Classes/JJBaseHeader.h'

s.public_header_files = 'JJTools/JJTools/Classes/JJBaseHeader.h'

s.subspec 'JJModel' do |ss|

  ss.source_files = 'JJTools/JJTools/Classes/JJModel/*'

 ss.dependency 'JJTools/JJDefine'

  end

最开始不理解这种分层的做法,其实相当于在JJTools里面有个子podspec,只要制定了子podspec包含那些上层的自然包括了,而头文件不在任何子podspec里面,所以只要s.source_files 包含一个头文件就好。可以参考AFN的这种写法;

4.项目中既有ARC又有MRC

把MRC单独分层出来

non_arc_files = 'JJTools/JJTools/Classes/JJSafe/*'

s.exclude_files = non_arc_files

s.subspec 'JJSafe' do |ss|

  ss.source_files = non_arc_files

  ss.requires_arc = false

  end


pod后自动添加flag

5.关于framework的使用可以在上层podspec中全部写出来 下面的子podspec不写 ;

6.如果发现 pod spec lint 没问题  但是一直trunk一直不对 考虑重新打个tag在push;

7.整个项目在我这里的层级关系如下cd的项目根目录


层级关系

ok,最后的install后安装是这样的


install后层级关系

你可能感兴趣的:(制作cocoapods库)