iOS 搭建组件化私有库

一、创建私有库索引

步骤1是在没有索引库的情况下或者是新增索引的时候才需要用到(创建基础组件库)
首先在码云上建立一个私有库索引,起名为SYComponentSpec

在这里插入图片描述

二、本地添加私有库索引

添加私有库索引

pod repo add SYComponentSpec https://gitee.com/sun-shiyu/sycomponent-spec

在这里插入图片描述

在这里插入图片描述

三、创建基础组件库

当你需要新建组件的时候,就在这里开始,如果是想修改原有的库,就可以直接在之前的组件仓库里面修改即可

1.在码云上创建组件库
命名为SYBasicComponents,如图:

在这里插入图片描述
2.创建SYBasicComponents本地库
默认创建路径:/Users/sunshiyu/SYBasicComponents

pod lib create SYBasicComponents

在这里插入图片描述
最后,项目本地组件库创建完成后会自动打开项目。

3.在私有库导入自己的代码

Classes文件夹下面的ReplaceMe.m文件删除掉,替换成你要上传私有库的代码,这里导入简单的两个测试文件:

// SYLog.h
+ (void)logger;
// SYLog.m
+ (void)logger {
    NSLog(@"-------- Log --------");
}

在这里插入图片描述

4.更新这个工程的pod库

  1. cdExample文件下
  2. 执行 pod install
    在这里插入图片描述

5.修改.podspec文件
在这里插入图片描述
在这里插入图片描述
有两个属性需要注意改下:
s.homepage:私有代码仓库的地址 https://gitee.com/sun-shiyu/sybasic-components
s.source:私有代码仓库的源地址 https://gitee.com/sun-shiyu/sybasic-components.git

其他属性根据需要自行配置。

6.将私有库push到远程仓库

注意远端需要有个master分支,这里先创建一个master分支:

 cd /Users/sunshiyu/SYBasicComponents 
git branch master
git checkout master

在这里插入图片描述

commit代码到本地然后push到远端:

 git branch (检查当前所在分支)
git status (查看当前git存了什么文件)
git add . (将所有文件缓存到待提交文件区域)
git commit -m "上传组件"
git remote add origin https://gitee.com/sun-shiyu/sybasic-components.git  (私有库git仓库地址)
git push -f origin master (将代码推送到远程私有库git仓库的master分支上面已经创建了)
git tag 0.1.0 (这里的版本号必须和podspec里面写的版本号一致)
git push -- tags (提交tag)

在这里插入图片描述
7.本地和远程校验

1.本地校验,在当前私有库目录下,输入命令:

pod lib lint --private --allow-warnings

在这里插入图片描述
校验成功:SYBasicComponents passed validation.

2.远程验证,在当前私有库目录下,输入命令:

pod spec lint --private --allow-warnings

在这里插入图片描述
校验成功:SYBasicComponents.podspec passed validation.

8.提交索引文件到远程索引库

1.所有验证通过之后,要将spec文件推送到最开始创建的私有库索引库当中

cd 到私有库项目目录,
pod repo push <本地索引库名称> <索引文件名> --allow-warnings
<本地索引库名称>在 /Users/sunshiyu/.cocoapods/repos 下的私有库索引项目名称
<索引文件名>就是以 podspec 结尾的,注意不要弄错

例如输入命令:

pod repo push SYComponentSpec SYBasicComponents.podspec --allow-warnings

在这里插入图片描述
2.推送去之后,在本地索引库中查看如下图​​​​​​​​​​​​​​:
在这里插入图片描述

getee 远端查看如下图:

在这里插入图片描述

四、使用基础组件库

随便创建一个项目名为 SYSpecDemo ,初始化 pod

 cd /Users/sunshiyu/Desktop/SYSpecDemo
pod init
pod install

打开编辑 podfile 文件

open podfile

如下:

# Uncomment the next line to define a global platform for your project
platform :ios, '11.0'

# source 添加对应的索引库,否则会pod install失败
source 'https://gitee.com/sun-shiyu/sycomponent-spec.git'

target 'SYSpecDemo' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for SYSpecDemo
  
  # pod 对应组件,可以对应版本
  pod 'SYBasicComponents'

end

再次:

pod install

就可以看到这个库:
在这里插入图片描述

导入头文件使用该库:

#import <SYBasicComponents/SYLog.h>

// 打印 log 
[SYLog logger];

五、组件库依赖第三方库

如果我们的组件库需要依赖第三方库,例如 AFNetWorkingYYModel 等,操作如下:

1.修改组件库的 SYBasicComponents.podspec 文件,添加依赖:
在这里插入图片描述
然后组件库执行 Example 项目 执行 pod install

2.同上面第6步,将组件库修改的代码提到远端。记住一定要记得打 tag,且要与索引库的 version 保持一致 。

在这里插入图片描述

git tag 0.2.0 (这里的版本号必须和podspec里面写的版本号一致)
git push -- tags (提交tag)

3.提交索引库远端,同上面的第8步:

pod repo push SYComponentSpec SYBasicComponents.podspec --allow-warnings

4.修改主项目的 podfile 文件,加入 github CocoaPods 索引库,用来加载github三方库的:

source 'https://github.com/CocoaPods/Specs.git'

在这里插入图片描述

然后执行 pod install

以上是使用 pod 'SYBasicComponents' 的方式使用组件库,也就是远程的方式,这种方式需要没更新组件库后都要打 tag 以及修改 specversion,然后修改主项目的 podfile 文件(根据情况也可能不需要要修改),最后主项目重新 pod install 。这样就能得到远程组件库最新的代码,缺点是主项目每次想更新组件库的最近代码都需要组件库打 tag 更新组件库的版本,如何实现只要组件库有代码更新,主项目直接拉最新的代码呢?答案是引用本地索引库的方式,我们只需要修改主项目的 podfile 文件如下:

# Uncomment the next line to define a global platform for your project
platform :ios, '11.0'

# source 添加对应的索引库,否则会 pod install 失败
# source 'https://gitee.com/sun-shiyu/sycomponent-spec.git'
source 'https://github.com/CocoaPods/Specs.git'

target 'SYSpecDemo' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for SYSpecDemo
  
  # pod 对应组件,可以对应版本
  
  # 方式一、引用远端组件库
  # pod 'SYBasicComponents'
  
  # 方式二:引用本地组件库,不需要 source 'https://gitee.com/sun-shiyu/sycomponent-spec.git'
  pod 'SYBasicComponents', :path => '~/SYBasicComponents/'
 
end

即使用 pod 'SYBasicComponents', :path => '~/SYBasicComponents/' 的方式来直接引用本地组件库的代码,这样拉代码每次都是最新的。我们 pod install 试试看,Pods 目录结构变如下图所示:

在这里插入图片描述
本地组件库 SYBasicComponents 里面就是最新的代码了。因为我们的组件库依赖了 AFNetworking YYModel,所以Pods中出现了这两个库。

结束!!!

参考:
iOS私有库搭建
iOS组件化搭建私有库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/56557.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker容器的基本操作

一、查看Docker的版本信息 [roothuyang1 ~]# docker version 二、查看docker的详细信息 [roothuyang1 ~]# docker info 三、Docker镜像操作 Docker创建容器前需要本地存在对应的镜像&#xff0c;如果本地加载不到相关镜像&#xff0c;Docker默认就会尝试从镜像仓库https://hu…

cc2652主协处理器分时控制同一个外设的问题

问题已提交TI论坛&#xff0c;我是提交到的中文论坛&#xff0c;然后fae给转到英文论坛了。 简单描述就是&#xff0c;怎么让这个单片机一会用主处理器控制SPI设备&#xff0c;一会再用协处理器控制同一个设备。 主处理器的spi配置使用 CCS studio配置的 协处理器使用Sensor Co…

【python】我用python写了一个可以批量查询文章质量分的小项目(纯python、flask+html、打包成exe文件)

web 效果预览&#xff1a; 文章目录 一、API 分析1.1 质量分查询1.2 文章url获取 二、代码实现2.1 Python2.11 分步实现2.12 一步完成2.13 完整代码 2.2 python html2.21 在本地运行2.22 打打包成exe文件2.23 部署到服务器 一、API 分析 1.1 质量分查询 先去质量查询地址&a…

uniapp app端 echarts 设置tooltip的formatter不生效问题以及解决办法

需求一&#xff1a; y轴数据处理不同数据增加不同单位 需求二&#xff1a; 自定义图表悬浮显示的内容 需求一&#xff1a;实现方式 在yAxis里面添加formatter yAxis: [{//y轴显示value的设置axisLabel: {show: true,formatter (value, index) > {var valueif (value > 1…

Jmeter用于接口测试中,关联如何实现

Jmeter用于接口测试时&#xff0c;后一个接口经常需要用到前一次接口返回的结果&#xff0c;应该如何获取前一次请求的结果值&#xff0c;应用于后一个接口呢&#xff0c;拿一个登录的例子来说明如何获取。 1、打开jmeter, 使用的3.3的版本&#xff0c;新建一个测试计划&#x…

抄写Linux源码(Day6:读闪客文章第一回 “最开始的两行代码”)

按照 Day1 完成了 Linux0.11 的运行之后&#xff0c;可以在 ~/oslab/linux-0.11 找到 linux0.11 的源码 根据闪客的文章第一回&#xff1a;https://mp.weixin.qq.com/s/LIsqRX51W7d_yw-HN-s2DA Linux0.11 的启动代码程序入点在 bootsect.s 里&#xff0c;总共 512 个字节 这…

烘焙小程序蛋糕店烘焙店源码点心店小程序源码

本系统开发使用JAVA技术栈开发 使用uniapp技术栈 支持微信小程序 &#xff0c;对接打印机&#xff0c;对接第三方同城跑腿平台 用户端使用&#xff1a;uniapp 管理端使用&#xff1a;vueelementui 后台服务使用&#xff1a;springbootjpa

Web课堂笔记

Web课堂笔记 文章目录 Web课堂笔记第一周html部分CSS部分php部分 第二周B/S工作原理http协议**块标记** 第三周标准盒状模型标签优先级**伪类选择器**伪元素派生选择器 第四周Flex布局多媒体查询下拉菜单作业 第五周创建一个NodeLocalStorage 和 SessionStorge 异同JQuery作业 …

filebeat kibana elasticsearch 日志监控

解压三个压缩包 一、filebeat的安装部署 1、打开filebeat的配置文件 2、Filebeat inputs 处打开日志输入开关&#xff0c;设置要监控的路径 3、Outputs 输出中设置Elasticsearch output的输出地址 4、配置kibana 的地址 5、执行 ./filebeat setup -e 二、Elasticsearch 安装…

github Recv failure: Connection reset by peer

Recv failure: Connection reset by peer 背景处理ping一下github网页访问一下github项目git配置git ssh配置再次尝试拉取 疑惑点待研究参考 背景 晚上敲着代码准备提交&#xff0c;执行git pull&#xff0c;报错Recv failure: Connection reset by peer。看着这报错我陷入了沉…

SpringBoot百货超市商城系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码 一、项目演示 项目演示地址&#xff1a; 视频地址 二、项目介绍 项目描述&#xff1a;这是一个基于SpringBoot框架开发的百货超市系统。首先&#xff0c;这是一个很适合SpringBoot初学者学习的项目&#xff0c;代…

微服务架构的模式介绍

1.微服务架构模式方案 用Scale Cube方法设计应用架构&#xff0c;将应用服务按功能拆分成一组相互协作的服务。每个服务负责一组特定、相关的功能。每个服务可以有自己独立的数据库&#xff0c;从而保证与其他服务解耦。 1.1 聚合器微服务设计模式 聚合器调用多个服务实现应用程…

k8s安装Jenkins

目录 ​编辑 一、环境准备 1.1 环境说明 二、安装nfs 2.1 安装NFS 2.2 创建NFS共享文件夹 2.3 配置共享文件夹 2.4 使配置生效 2.5 查看所有共享目录 2.6 启动nfs 2.7 其他节点安装nfs-utils 三、创建PVC卷 3.1 创建namespace 3.2 创建nfs 客户端sa授权 3.3 创建…

SQL Server数据库 -- 索引与视图

文章目录 一、索引 聚集索引非聚集索引二、视图三、自定义函数 标量函数表值函数四、游标五、总结 前言 在学习完创建库表、查询等知识点后&#xff0c;为了更加方便优化数据库的存储和内容&#xff0c;我们需要学习一系列的方法例如索引与视图等等&#xff0c;从而使我们更加…

SpringBoot项目中使用Lombok插件中Slf4j日志框架

前言&#xff1a;idea需要安装lombok插件&#xff0c;因为该插件中添加了Slf4j注解&#xff0c;可以将Slf4j翻译成 private static final org.slf4j.Logger logger LoggerFactory.getLogger(this.XXX.class); springboot本身就内置了slf4j日志框架&#xff0c;所以不需要单独…

Unity-缓存池

一、.基础缓存池实现 继承的Singleton脚本为 public class Singleton<T> where T : new() {private static T _instance;public static T GetIstance(){if (_instance null)_instance new T();return _instance;} } 1.PoolManager using System.Collections; using S…

中国工商银行长春分行 聚焦融合互促 让机关党建更有活力

党的十八大以来&#xff0c;中国工商银行长春分行党委认真落实中央部署&#xff0c;立足金融工作政治性、人民性的基本原则&#xff0c;深刻把握机关党建的要点、着力破解难点、大力打造亮点&#xff0c;围绕“党建”模式&#xff0c;将党建融入经营管理各个方面&#xff0c;使…

创建邮件服务器(小微企业)

这里写自定义目录标题 目的硬件选型&#xff1a;软件选型&#xff1a;coremail &#xff08;商业版本&#xff09;postfixumail免费开源版本新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适…

docker minio安装

1.介绍 Minio是一款开源的对象存储服务&#xff0c;它可以在任何硬件或云平台上提供高性能、高可用性和高安全性的存储解决方案。Minio最新版是2021年11月发布的RELEASE.2021-11-24T23-19-33Z&#xff0c;它带来了以下几个方面的改进和新特性&#xff1a; - 支持S3 Select AP…

c语言(函数)

目录 何为函数 库函数 自定义函数 二分查找数组下标 链式访问 函数的声明 函数定义 递归 正向打印数字 打印字符个数 使用临时变量 递归(不使用临时变量) n的阶乘 一般形式 递归 斐波那契数 递归 正常做法 何为函数 在计算机科学中&#xff0c;子程序是一个…