pod私有库

news2025/1/11 14:24:33

私有库制作步骤

1、在gitlab上创建一个空项目,并用source tree导到本地,便于后面代码更新上传

2、cd 到项目下  执行pod lib create 【组件名】如:pod lib create TDAlertView

输入命令后会显示下载模板,会有几秒钟等待

Cloning `GitHub - CocoaPods/pod-template: An opinionated template for creating a Pod.` into `TDAlertView`….

 

模板下载好以后,需要你回答几个问题:

1.你要使用哪个平台?iOS

2.你要使用哪种语言?

3.库中是否包含一个实例程序?(一般选择示例程序 Yes)

4.你要使用哪个测试框架?(没有就写None)

5.是否要UI测试?(Yes or No 都可以)

6.类名前缀是什么?(这个创建Swift库的时候没有这一项)

3、删除pod中replaceMe.m 文件

将组件目录文件放到Classes目录下

将组件所需的资源文件打成bundle放到Assets目录下

将组件所需的资源文件直接以png的形式放到Assets目录下的文件夹中

 

4、修改spec文件 

A. s.name  以’TTP’为前缀,避免与其他类库名冲突

B. 版本号需要与后面打的tag一致

C. s.homepage (#库介绍主页地址)为gitlab 项目的http链接  

D. #源码文件配置 s.source_files   ‘**’代表所有目录 ‘*’ 代表所有文件  如:s.source_files = 'iOS-TTP-Widgets/Classes/TDAlertView/*.{h,m}'

E. 资源文件,官方建议采用s.resource_bundles。 采用打成bundle放到Assets中会导致在项目中找不到bundle中的图片路径,无法读取图片,故更改为 s.resource_bundles形式

    给 Pod 添加资源文件: http://blog.xianqu.org/2015/08/pod-resources/

F. 可依赖于当前仓储中的组件

G. 当前是将所有组件库放到项目中,通过添加不同的spec文件来区分不同组件

5、修改podfile文件

 (测试组件使用,发布可略过)

添加source 

如果有私有库依赖于当前私有仓储中的组件,当前pod没有引入该组件时,需要引入私有仓储的链接

如果已引入了私有仓储的链接,又有组件引入了官方中的公有库,需要引入官方master仓储的链接

cd 到Example目录下 执行pod install,重新打开项目文件,所添加的内容就会显示到项目中去

6、提交源代码到git 

 1、可以通过source tree上传代码

 2、通过命令行上传代码

7、打tag

当前是将所有组件库放到项目中,通过添加不同的spec文件来区分不同组件

但是tag是打在整个项目上的,需要通过不同的tag去区分不同的组件

同时tag要与组件的版本相对应

当前已发布到私有仓储中的组件

Adding the spec to the `iOS-TTP-Spec' repo

 - [Add] TTP-WCategory (1.0.0)

 - [Add] TTP-TDAlertView (2.0.0)

 - [Add] TTP-WIndexList (3.0.0)

8、创建私有仓储

在gitlab中创建一个git库,用于管理我们的Specs

添加私有仓储

pod repo add 【私有仓储名】【私有仓储地址】

9、验证私有库

pod lib lint TTP-TDAlertView.podspec  --allow-warnings 

依赖私有库:pod 依赖私有库的pod lib lint - 简书

如果依赖私有仓储中的组件 需要添加--sources=私有仓储名

如果依赖官方公有库,需要添加--sources=master

依赖多个私有仓储,可以为--sources=REPO_NAME1,REPO_NAME2,REPO_NAME3,master

如:pod lib lint TTP-WAlertView.podspec --sources=REPO_NAME1,REPO_NAME2,REPO_NAME3,master

a. 只依赖iOS-TTP-Spec 中的一些私有库(如WCategory)

 pod lib lint TTP-WAlertView.podspec --sources=iOS-TTP-Spec

b. 依赖iOS-TTP-Spec和master中的一些私有库(如WCategory、AFNetworking),

 pod lib lint TTP-WAlertView.podspec --sources=iOS-TTP-Spec,master

pod lib lint  //验证本地库是否正确   

 lib  换成 spec   就是验证远程服务器的 库 是否正确

--verbose:打印错误

--allow-warnings:允许警告

--use-libraries:如果自己私有库包含library,则需要

--no-clean:检查问题

--sources:如果依赖别的第三方库则需要

10、私有库发布

pod repo push  【私有仓储名】 【需要发布的spec文件名】 --allow-warnings

如:

pod repo push iOS-TTP-Spec  TTP-TDAlertView.podspec --allow-warnings

如果依赖私有库,按照第8条,增加--sources引导

11、查看我们本地的Specs库:

直接Findle ->右键 -> 前往文件夹 -> 输入:~/.cocoapods/repos ->点击前往

12、遇到的问题

1、若是出现错误信息

[!] The repo MyRepo at ../.cocoapods/repos/MyRepo is not clean

更新下我们的版本库,

$ pod repo update [你的repo]

13、删除私有库或私有库版本

A. 删除iOS-TTP-Spec私有仓储中的对应的私有库或私有库版本

B. 删除iOS-TTP-Widgets中对应的tag

13、上传WAlertView私有库示例

第一步:添加本地私有仓储

若第一次操作,本地没有iOS-TTP-Spec仓储的名字,.cocoapods/repos/ 可以到这个目录下查看,如果有2-mobile-ios-ttp-spec仓库的名称请删除

鉴于每个人的本地私有仓储不同,增加这一步,统一本地私有仓储名,便于后续操作

pod repo add  iOS-TTP-Spec http://xxx.xxx

第二步:增加WAlertView对应的文件(参考3)

将组件目录文件放到Classes目录下

将组件所需的资源文件直接以png的形式放到Assets目录下的文件夹中

第三步:增加spec文件(参考4、修改spec文件)

第四步:

第五步:如果考虑在exzample中增加示例(参考5、修改podfile文件) (测试组件使用,发布可略过)

第六步:提交源代码到git 

第七步:打tag(与spec对应的版本号一致)

第八步:验证私有库(参考9)

因依赖官方库YYText和本地私有库WCategory,需要添加-–sources

pod lib lint TTP-WAlertView.podspec --sources=iOS-TTP-Spec,master --allow-warnings

第九步:私有库发布

pod repo push  【私有仓储名】 【需要发布的spec文件名】 --allow-warnings

pod repo push iOS-TTP-Spec TTP-WAlertView.podspec --sources=iOS-TTP-Spec,master --allow-warnings

=======================================================================

以下是已有的git仓库,制作私有仓库:

1、创建私有仓储,如果有的话,此步骤忽略

pod repo add  iOS-TTP-Spec http://xxx.xxx

2、新建podspec文件

3、打tag

4、验证podspec

 pod lib lint xxxx.podspec --allow-warnings

5、上传podspec到iOS-TTP-Spec

pod repo push iOS-TTP-Spec xxx.podspec --allow-warnings

问题记录:

1、遇到控件版本不支持的问题:  

 - ERROR | [iOS] xcodebuild:  EFCountingLabel/EFCountingLabel/EFCount.swift:164:40: error: 'default' has been renamed to 'RunLoopMode.defaultRunLoopMode'

    - NOTE  | [iOS] xcodebuild:  Foundation.RunLoop.Mode:4:23: note: 'default' was introduced in Swift 4.2

解决方案:

1、在pod lib lint 或者 pod repo push 追加 --swift-version=5.0版本信息

pod repo push iOS-TTP-Spec CheckReportModule.podspec --sources=master,iOS-TTP-Spec --allow-warnings --swift-version=5.0

参考文献:cocoapods建swift版本的私有库时注意的地方 - 简书

2、pod库指定版本:第一种方法:在 .podspec文件中直接s.swift_version='5.0';第二就是 echo "5.0" > .swift-version

问题二:解决pod lib lint/repo push 报错 ...... normal arm64

发布TTPWUMService 时报错 ...... normal arm64

验证发现是因为使用的Xcode12带的命令行工具发布版本,应当是模拟器版本会生成arm64,符号架构混乱导致的报错

解决办法 一:

pod repo push 命令添加 --skip-import-validation 参数,push 将跳过验证 pod 是否可以导入。

解决办法 二:

podspec 添加以下配置
# 模拟器排除arm64架构
s.pod_target_xcconfig = {
'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64'
}
s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64'
}

参考:https://www.jianshu.com/p/6f3f634d084b

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文搞懂 python 中的 classmethod、staticmethod和普通的实例方法的使用场景

什么是类方法(classmethod)/静态方法(staticmethod)和普通成员方法? 首先看这样一个例子: class A(object):def m1(self, n):# 属于实例对象,self 指代实例对象,print("self:…

Allegro如何更改钻孔孔符以及大小操作指导

Allegro如何更改钻孔孔符以及大小操作指导 PCB设计完成时,需要放出整板的钻孔表来,有的钻孔孔符以及大小并不是需要的,Allegro支持更改钻孔符以及大小,如下图 需要更改孔符以及大小, 具体操作如下 选择Manufacture选择NC

aws parallelcluster 理解 parallelcluster 集群的配置和使用

参考资料 Setup AWS ParallelCluster 3.0 with AWS Cloud9 200 HPC For Public Sector Customers 200 HPC pcluster workshop 200 Running CFD on AWS ParallelCluster at scale 400 Tutorial on how to run CFD on AWS ParallelCluster 400 Running CFD on AWS ParallelC…

CSS 伪元素也可以被用于反爬案例?来学习一下。26

先说一下什么是 CSS 中的伪元素,CSS 伪元素的概念是指在 CSS 中使用的一些特殊的元素,它们不存在于 HTML 文档中,而是由浏览器生成的元素,用于提供额外的样式控制。这些伪元素在 HTML 代码中不存在,但可以在 CSS 中通过…

[idekCTF 2023] Malbolge I Gluttony,Typop,Cleithrophobia,Megalophobia

这些题名字我都不认识,这是什么语呀。这个比赛感觉太难了,加上春节将近比较忙,仅作了4个简单题。记录一下。Misc/Malbolge I Gluttony这是个虚拟机的题,放入misc感觉有点不可思忆,题目给了7个命令,有"…

【云原生进阶之容器】第五章容器运行时5.1节--容器运行时总述

1 Kubernetes引言 Kubernetes 已经成为容器编排调度领域的事实标准,其优良的架构不仅保证了丰富的容器编排调度功能,同时也提供了各个层次的扩展接口以满足用户的定制化需求。其中,容器运行时作为 Kubernetes 管理和运行容器的关键组件,当然也提供了简便易用的扩展…

图解二叉树的构造 | 中序 + 后序

中序后续构造二叉树 https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/ 递归思路 递归思路很简单, 因为无论是构造一棵大树还是一棵小树, 都是重复的子问题, 思路主要麻烦在边界上 如下图所示 上述是中序和后续序列 我们要递归, 需…

BetaFlight飞控AOCODARC-F7MINI固件编译

BetaFlight飞控AOCODARC-F7MINI固件编译1. 编译目标(AOCODARC-F7MINI)2. 编译步骤Step 1 软件配置环境准备Step 2 获取开源代码Step 3 构建命令介绍Step 4 构建命令准备Step 5 厂家目标板查询Step 6 目标固件编译Step 7 目标固件清理3. 参考资料BetaFlig…

MyBatis中TypeHandler的使用教程

一.TypeHandler作用及其使用场景在我们平常开发操作数据库时,查询、插入数据等操作行为,有时会报数据类型不匹配异常,就可以得知数据的类型是不唯一的必然是多种不同的数据类型。并且我们必须要明确的一点就是java作为一门编程语言有自己的数…

如何使用ElementUI的table组件来实现单元格的行合并

前言 最近在编写一个值班的排班表,然后中间涉及到了表格应用。并且还要做出类似这种效果的行合并效果: 然后就开始找组件了。Html的table是有rowsSpan和colsSpan的属性来实现行合并和列合并的。然后就在网上找资料,发现没有几篇能把这两个属性将好的&a…

LeetCode刷题模版:111 - 120

目录 简介111. 二叉树的最小深度112. 路径总和113. 路径总和 II114. 二叉树展开为链表115. 不同的子序列116. 填充每个节点的下一个右侧节点指针117. 填充每个节点的下一个右侧节点指针 II118. 杨辉三角119. 杨辉三角 II120. 三角形最小路径和结语简介 Hello! 非常感谢您阅读海…

SWPUCTF 2022新生赛 web部分wp

😋大家好,我是YAy_17,是一枚爱好网安的小白。 本人水平有限,欢迎各位大佬指点,一起学习💗,一起进步⭐️。⭐️此后如竟没有炬火,我便是唯一的光。⭐️ 目录 [SWPUCTF 2022 新生赛]…

linux中使用KubeSphere和集群k8s 部署springboot项目

上期已经介绍了单体k8s部署springboot项目,这期讲解集群k8s部署springboot项目 因为部署方式已经在单体中讲过,现在大体粗略讲一下首先看下集群节点,如下所示: 第一步:创建项目----》按照做的项目名称建 创建后&…

MyCat实现单库分表+代理所有表

MyCAT支持水平分片与垂直分片: 水平分片:一个表格的数据分割到多个节点上,按照行分隔。 垂直分片:一个数据库中多个表格A,B,C,A存储到节点1上,B存储到节点2上,C存储到…

Unity 过场工具(Cutscene)设计(二)

Unity 过场工具(Cutscene)设计(二) 本章主要分析一下过场一般的必要组成元素,以及在Unity中的制作方案 镜头 通常来说一个表现要求比较高的过场,需要专业的导演进行运镜操作的。 在Unity中官方有一个很好的镜头插件 Cinemachine…

基于Leaflet的VideoOverlay视频图层叠加实战

前言在基于二维的场景中,也许会遇到以下的需求。在某交通路口或者重要的监控点,需要将实时或者录制的视频信息叠加在地图上。更有甚者,随着设备通讯方式的增强,无人机等设备可以采集实时数据,实时回传到控制终端&#…

纵有疾风起,Petterp与他的2022

引言 每逢年末,都要来聊一聊关于今年的各种事情,今昔也不例外:) 与往年不同的是,今天刚搬完家,现在是晚上 1:44 ,正是忙碌一天后比较头痛的时刻。 此刻写点东西,脑子也许会放松一下。🤖 坐在桌子前&…

RFID技术应用在服装门店管理

服装行业是一个高度一体化的行业,集设计研发、成衣生产、运输、销售于一体。在这些过程中,传统的服装供应链往往消耗巨大的人力、物力和资金成本,但效果一般。当今市场消费者的需求变幻莫测,时尚潮流日新月异。稍有延误&#xff0…

从零编写MDK的FLM烧录算法

文章目录前言一、将代码中的图片资源下载到外部flash1. 修改分散加载文件2. 添加外部flash算法二、制作FLM文件步骤三、使用STM32CubeMX新建工程前言 上文讲过,当我们要下载编译好的镜像到Flash时,首先要做的一步就是选择合适的Flash下载算法&#xff0…

WPS Office 2019 版本 excel透视图创建及删除

摘要:记录一下在做2022年总结数据时遇到的问题,主要问题有2个,①从飞书多维表格导下来数据后不能求和计算和下拉序号,②excel数据透视表创建及删除。 相关文章: 一、Excel WPS Office 2019 版本 excel透视图创建及删…