cocoapods相关的知识点
安装和卸载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相关的知识点的更多相关文章
- dubbo相关的知识点总结
dubbo最近提交到了apache,成为了apache的孵化项目,又开始活跃起来了.就官方在git上面的说明文档和其他资料,学习总结以下dubbo的一些知识点. .The dubbo protocol ...
- 关于IOS的Cocoapods相关问题
Cocoa Pods确实是一个方便的工具,特别是在敏捷开发多个项目的时候,一个工具重复使用,大量节约时间: 可以及时更新github上面的开源库代码,只要改动Podfile文件中对应的开源库的版本号即 ...
- ksar、sar及相关内核知识点解析
关键词:sar.sadc.ksar./proc/stat./proc/cpuinfo./proc/meminfo./proc/diskstats. 在之前有简单介绍过sar/ksar,最近在使用中感觉 ...
- Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结
转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...
- Python基础总结之第八天开始【while循环以及for循环,循环嵌套等循环相关的知识点】(新手可相互督促)
ennnnn,年薪20万的梦想是不是又进了一步: 循环,什么是循环,循环就是电池有电,手机屏幕可以循环一整天的使用:循环就是地球不毁灭,太阳日复一日的出现...... 不接受反驳,谢谢!~ 只要条件满 ...
- python相关遗漏知识点补充
python中的相关帮助命令 假设s是一个字符串, 那么dir(s)可以列出字符串对象的所有属性(方法也是函数属性),其中有下划线的部分与类重 载有关,用来表示python实现细节,没有下划线的属性是 ...
- mysql 和字符串截取相关的知识点
LOCATE(',','123,456') - 1) SELECT LEFT('123,456',3); SELECT LEFT('123,456',LOCATE(',','123,456') - 1 ...
- Oracle相关的知识点
1. 如何在Oracle SQLPlus中执行SQL Script文件 以下面的格式在提示符中输入@{file name} SQL>@{file} 假设你要运行的文件的名字是script.sql ...
- 与html相关的知识点整理
梳理html时发现的一些问题.总结一下,答案大都从网上找来. 一.html 与 htm 的区别 没有本质的区别..htm是在win32时代,系统只能识别3位扩展名时使用的.现在一般都使用.html. ...
随机推荐
- linux通过grep根据关键字查找日志文件上下文
linux通过grep根据关键字查找日志文件上下文 1.在标准unix/linux下的grep命令中,通过以下参数控制上下文的显示: grep -C 10 keyword catalina.out 显 ...
- 实战_1:在Eclipse中新建RCP项目
(1)file => New => Plug-in Project (2) 指定项目名称 => next source folder: 源码路径 Output folder:编译后 ...
- [LC] 692. Top K Frequent Words
Given a non-empty list of words, return the k most frequent elements. Your answer should be sorted b ...
- spring事务管理(xml配置)与spring自带连接数据库JdbcTemplate
什么是事务,很通俗的话来说就是,我们日常生活中总会出现在银行转账的业务,加入A向B转账100元,此时A的账户中应该减少100元,B的账户中增加100元,但是如果在A转完账B还没有接受的时候,服务器出现 ...
- Oracle 10G 服务端的安装
安装依赖包yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-l ...
- 浅谈Java转义符\\|
看一段程序 String t = "a||b||c||d"; String[] temp = t.split("\\|\\|"); System.out.pri ...
- 省A类竞赛二等奖--村先游项目VUE前端重构
村先游--省二竞赛项目VUE重构 源码地址: 重构前的(前端+后台):https://github.com/Archer-Fang/cunxianyou 重构前的(前端):https://github ...
- unittest(2)-加载用例的3种方式-输出测试报告
# 导入测试类执行测试用例 import unittest from day_20191202.class_unittest import TestMathMethod, TestMulti # fr ...
- Drools 7.15.0 docker容器方式部署
关于drools的相关介绍就不再赘述了,关于drools网上的资料都很少,或者都有些老了,最近折腾了一下,记录下安装部署的过程,希望能节省下大家的时间. 一.快速部署 1.拉取基础镜像,命令如下: d ...
- 重大改革!Python,最接近人工智能的语言~将被加入高考科目!
就在前几天,和一位浙江省高校的信息技术老师聊天,我得到了一个震惊的消息: 明年,浙江省信息技术教材将不会在使用晦涩难懂的VB语言,而是改学更简单易懂的Python语言.也就是说, Python语言将纳 ...