安装和卸载cocoapods

安装

sudo gem install cocoapods
#建立本地索引
pod setup
# 1.8.0以后支持CDN 大可不必如此 只需在Podfile文件头部加上一句 source 'https://cdn.cocoapods.org'
source 'https://cdn.cocoapods.org'

卸载

sudo gem list --local | grep cocoapods
sudo gem uninstall cocoapods
sudo gem uninstall cocoapods-core
sudo gem uninstall cocoapods-downloader
sudo gem uninstall cocoapods-plugins
sudo gem uninstall cocoapods-search
sudo gem uninstall cocoapods-stats
sudo gem uninstall cocoapods-trunk
sudo gem uninstall cocoapods-try
sudo gem uninstall cocoapods-deintegrate

常规问题解决思路

50%报错问题可以通过 pod install或者pod update解决

pod install #有时可能需要删除pods或者Podfile.lock 协作开发的时候最好是使用统一版本配置 避免删除Podfile.lock来解决问题
或者
pod update
或者
pod repo update
或者
pod install --repo-update

指定swift编译版本

post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |configuration|
configuration.build_settings['SWIFT_VERSION'] = "3.0"
# Objective-C 跟 Swift 混编的项目, 想要引入 OC 的第三方库的话, 还需要添加另一项参数
configuration.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'NO'
end
end
end

由于墙的原因,可能会install失败,Gem换淘宝的源

gem sources -a https://ruby.taobao.org/ #替换源
gem sources -l #查看源

BitCode一般来说是选择关闭的,如果有类似报错,pod也可以加上这一设置,排查问题

post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end

添加Podfile

在项目根目录下pod init会生成一个Podfile文件此时vim Podfile进入编辑模式编辑内容

platform :ios, '9.0'
use_frameworks! target "DemoProj" do
#私有库链接
source 'git@gitblit.local.com:XXX/iOSLibs.git'
#公有库源 1.8.0之后支持CDN 本来应该默认是source 'https://github.com/CocoaPods/Specs.git' 可省略不写
source 'https://cdn.cocoapods.org'
#默认是使用最新版本
pod 'YYModel'
# 指定版本号避免升级不兼容api
pod 'ReactiveObjC','~>3.1.1'
# 指定链接地址 可能是fork的库
pod 'YYText' , :git => 'https://github.com/ibireme/YYText.git'
#本地库
pod 'WGBSelectPhotoView',:path=> './LocalLibs/WGBSelectPhotoView'
end

创建自己组件

克隆远程库

git clone git@gitblit.local.com:XXX/iOSLibs.git

创建组件

pod lib create HelloWorldLib
# 执行之后 一步一步陆续出现以下几个提问
1.What platform do you want to use? [ iOS / macOS ]
选择平台 输入iOS即可
2.What language do you want to use? [ Swift / ObjC ]
选择语言
3.Would you like to include a demo application with your library? [ Yes / No ]
是否包含demo
4.Which testing frameworks will you use? [ Specta / Kiwi / None ]
测试框架选择
5.Would you like to do view based testing? [ Yes / No ]
是否查看测试过程
6.What is your class prefix?
设置类前缀

查看目录结构 需安装brew install tree插件

tree -L 2 #查看2级目录结构

├── Example
│   ├── Podfile
│   ├── Podfile.lock
│   ├── Pods
│   ├── Tests
│   ├── HelloWorldLib
│   ├── HelloWorldLib.xcodeproj
│   └── HelloWorldLib.xcworkspace
├── LICENSE
├── README.md
├── HelloWorldLib
│   ├── Assets
│   └── Classes
├── HelloWorldLib.podspec
└── _Pods.xcodeproj -> Example/Pods/Pods.xcodeproj
以上 HelloWorldLib 目录下的 Classes 里替换你的库文件, Assets 放资源文件

编辑 HelloWorldLib.podspec文件

Pod::Spec.new do |s|
s.name = 'HelloWorldLib'
s.version = '1.0.0' #版本号与git tag 保持一致
s.summary = 'xxxxx的功能组件.' #组件描述
s.description = <<-DESC
TODO: Add long description of the pod here.
DESC
#添加一大段的描述 一般为更新说明
s.homepage = 'https://github.com/xxx/HelloWorldLib' #项目主页 一般是github pages 或者 文档博客
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' } #开源证书类型
s.author = { 'XXX' => 'xxxxxxx@qq.com' } #作者用户名和邮箱
s.source = { :git => 'https://github.com/XXXX/HelloWorldLib.git', :tag => s.version.to_s }#公有库写法
#s.source = { :git => 'git@gitblit.local.com:XXX/iOSLibs.git', :tag => s.version.to_s }#私有库一般放在自己服务器上 # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>' #社交媒体 s.ios.deployment_target = '8.0' s.source_files = 'HelloWorldLib/Classes/**/*'
#这一步很关键 如果是使用命令模板`pod lib create HelloWorldLib`生成的 直接把库文件放进HelloWorldLib/Classes目录下即可,要是自己创建的则需要匹配库文件的路径,能访问到即可 # s.resource_bundles = {
# 'HelloWorldLib' => ['HelloWorldLib/Assets/*.png']
# } #资源文件 # s.public_header_files = 'Pod/Classes/**/*.h' #类库头文件
# s.frameworks = 'UIKit', 'MapKit' #依赖系统框架
# s.dependency 'AFNetworking', '~> 2.3' #依赖库
end

使用本地库调试

使用本地库调试,直接编辑Podfile,pod本地库的相对路径访问即可

 pod 'HelloWorldLib', :path => '../' # 使用`pod lib create HelloWorldLib`生成的工程自带本地库调试  其他工程取决于本地库相对于工程根目录所在的相对路径
#这个 :path => '../' 路径只是访问HelloWorldLib.podspec文件的所在,如果路径正确,使用 `pod install` 即可安装正确

发布远程库

若是尚未关联远程库,则需加一下关联操作

#若是没有关联远程库 可以执行以下操作
git remote add origin https://gitlab.com/xxx.git #(替换为自己的实际git地址)
git push --set-upstream origin master

发布私有库如下流程:

git add .
git commit -am "commit HelloWorldLib v1.0.0"
git tag 1.0.0 #版本号映射
git push origin master --tags
pod repo push git@gitblit.local.com:XXX/iOSLibSpecs.git HelloWorldLib.podspec # 需要自己创建一个索引库iOSLibSpecs存储 .podspec

发布远程公有库

HelloWorldLib.podspec所在目录下

git add .
git commit -am "commit HelloWorldLib v1.0.0 "
git tag 1.0.0 #版本号映射
git push origin master --tags
pod trunk push HelloWorldLib.podspec --allow-warnings --verbose #发布推送

cocoapods相关的知识点的更多相关文章

  1. dubbo相关的知识点总结

    dubbo最近提交到了apache,成为了apache的孵化项目,又开始活跃起来了.就官方在git上面的说明文档和其他资料,学习总结以下dubbo的一些知识点. .The dubbo protocol ...

  2. 关于IOS的Cocoapods相关问题

    Cocoa Pods确实是一个方便的工具,特别是在敏捷开发多个项目的时候,一个工具重复使用,大量节约时间: 可以及时更新github上面的开源库代码,只要改动Podfile文件中对应的开源库的版本号即 ...

  3. ksar、sar及相关内核知识点解析

    关键词:sar.sadc.ksar./proc/stat./proc/cpuinfo./proc/meminfo./proc/diskstats. 在之前有简单介绍过sar/ksar,最近在使用中感觉 ...

  4. Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结

    转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...

  5. Python基础总结之第八天开始【while循环以及for循环,循环嵌套等循环相关的知识点】(新手可相互督促)

    ennnnn,年薪20万的梦想是不是又进了一步: 循环,什么是循环,循环就是电池有电,手机屏幕可以循环一整天的使用:循环就是地球不毁灭,太阳日复一日的出现...... 不接受反驳,谢谢!~ 只要条件满 ...

  6. python相关遗漏知识点补充

    python中的相关帮助命令 假设s是一个字符串, 那么dir(s)可以列出字符串对象的所有属性(方法也是函数属性),其中有下划线的部分与类重 载有关,用来表示python实现细节,没有下划线的属性是 ...

  7. mysql 和字符串截取相关的知识点

    LOCATE(',','123,456') - 1) SELECT LEFT('123,456',3); SELECT LEFT('123,456',LOCATE(',','123,456') - 1 ...

  8. Oracle相关的知识点

    1. 如何在Oracle SQLPlus中执行SQL Script文件 以下面的格式在提示符中输入@{file name} SQL>@{file} 假设你要运行的文件的名字是script.sql ...

  9. 与html相关的知识点整理

    梳理html时发现的一些问题.总结一下,答案大都从网上找来. 一.html 与 htm 的区别 没有本质的区别..htm是在win32时代,系统只能识别3位扩展名时使用的.现在一般都使用.html. ...

随机推荐

  1. python Pandas Profiling 一行代码EDA 探索性数据分析

    文章大纲 1. 探索性数据分析 代码样例 效果 解决pandas profile 中文显示的问题 1. 探索性数据分析 数据的筛选.重组.结构化.预处理等都属于探索性数据分析的范畴,探索性数据分析是帮 ...

  2. PAT甲级——1041 Be Unique

    1041 Be Unique Being unique is so important to people on Mars that even their lottery is designed in ...

  3. springboot+mybatis登录注册

    接上上一篇博客的继续往下做,上一篇已经实现了mybatis自动生成代码,和连接数据库测试部分 本篇我们添加一些功能,实现登录注册,时间原因,前端实现的很粗糙,以后有时间再改吧 首先看一下数据库的构成, ...

  4. 总结oracle18.3c-centos7-安装

    官网下载对应名字rpm包 oracle-database-ee-18c-1.0-1.x86_64.rpm下载依赖包 除非已有依赖 否则会报缺少依赖错误 1 curl -o oracle-databas ...

  5. [LC] 58. Length of Last Word

    Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...

  6. xpath-helper 插件下载

    链接:https://pan.baidu.com/s/1YuTGrdwwAKQd2sIcuarBHQ 提取码:qb8p

  7. HDU1556 Color the ball [线段树模板]

    题意:区间修改序列值,最后输出. //hdu1166 #include<iostream> #include<cstdio> #include<cstring> # ...

  8. 浮动框架iframe

    浮动框架式一种比较特别的框架,和frame比较类似.不过frame必须在frameset中才可以,而iframe不一样,首先, 他是一种内联框架,其次,他可以放在网页中的任何位置. 所以,iframe ...

  9. Nginx笔记总结十一:Nginx重写规则指南

    依赖PCRE库,需要安装pcre,最多循环10次,超过后返回500错误, 1.       rewrite模块指令 break:完成当前设置的重写规则,停止执行其他的重写规则 if:  if () { ...

  10. MyBatis if test 传入一个数字进行比较报错 There is no getter for property named 'userState' in 'class java.lang.Integer'

    在写MyBatis映射文件中,我要传入一个 int 类型的参数,在映射文件中用 'test' 中进行比较,我花了很长时间百度,发现都是不靠谱的方法,有把数字在比较时转成字符串用 equals 比较的. ...