安装和卸载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. mysql模糊匹配like及批量替换replace

    1.mysql 模糊匹配 like 与 not like 用法 : SELECT * FROM `user` where `nickname` LIKE '%测试%' SELECT * FROM `u ...

  2. linux下java调用C

    linux下java调用C 分类: linux2012-05-22 09:12 1529人阅读 评论(0) 收藏 举报 javalinuxmakefilegccclasscommand 下面是在ubu ...

  3. docker启动遇到的问题

    转:https://blog.csdn.net/w1316022737/article/details/83692701 遇到问题: Job for docker.service failed bec ...

  4. nginx+php+扩展件安装实践版

    一.安装各种软件包 yum -y install wget git vim lrzsz unzip zip gcc make gd-devel bzip2 bzip2-devel libcurl li ...

  5. K3CLOUD呼吸时间设置

  6. [LC] 244. Shortest Word Distance II

    Design a class which receives a list of words in the constructor, and implements a method that takes ...

  7. javascript中的undefined 和 not defined

    经研究发现,两者之间有很大的区别,不知从英语讲,这两者都有啥区别,研究结果如下 测试os:ubuntu 测试浏览器:chrome 测试案例1 console.log(a) 报错 ReferenceEr ...

  8. springboot学习笔记:4.logback日志配置

    springboot中日志组件推荐使用logback: 由于springboot内置了logback,所以可以直接在application.properties中配置:如果要功能丰富些,则配置下log ...

  9. HTTP 协议的基本知识,包括请求流程、请求方法等

    一.什么是http协议? HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和Int ...

  10. jQuery2.0.0版本以后不再支持ie8的原因

    在引用jQuery时,引用高版本的Jq会在IE8下报错,在网上查了一下,jq在2.0+的版本就已经放弃对ie8的支持了.之前没有仔细研究过jq版本,借此机会去看了一下jq版本的知识.一.如何查看jq的 ...