脑壳大,写了个cocoapods 已经上了 后面增加内容,搞忘了以前怎么写的了 还是在上面记录哈别到时候更新的还是忘了
1.github上面新建一个项目;
2.git clone 到本地;
3.cd 到当前目录 创建.podspes文件 for example JJTools.podspec;
$ pod spec create JJTools;
4.在目录中创建工程(此处命名为JJTools),创建共享的类Classes;
5.编辑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
10.删除三方库//这个还未验证过
pod trunk delete JJTools0.0.1
pod trunk deprecate JJTools
podsetup
10.清除缓存:pod cache clean --all
以下说几个遇到的坑和经验,供自己以后回顾和道友一起看:
1.确保自己的项目能有run起来,前期不知道咋的build没问题但是run的时候始终没反应导致最后trunk的时候一直报这个错误:
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
5.关于framework的使用可以在上层podspec中全部写出来 下面的子podspec不写 ;
6.如果发现 pod spec lint 没问题 但是一直trunk一直不对 考虑重新打个tag在push;
7.整个项目在我这里的层级关系如下cd的项目根目录
ok,最后的install后安装是这样的