当前位置: 首页 > news >正文

pod私有库

私有库制作步骤

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

相关文章:

  • 电商网站国内外需求分析/百度域名
  • 自己制作免费网站/百度seo优化推广公司
  • 淘宝发布网站建设/进一步优化
  • 江苏疫情最新通报/大连谷歌seo
  • 网站建设犭金手指a排名12/深圳整合营销
  • 北京网站建设公司拟/百度竞价有点击无转化
  • 曲线曲率介绍和python求法
  • Spring之AOP简单讲解
  • 解决Vue3中使用setup如何定义组件的name属性
  • antd 类组件swiper中的指示器和ref
  • 自主异常检测算法(Matlab代码实现)
  • java中的位运算符
  • 二十、解释器模式 ( Interpreter Pattern )
  • SpringMVC视图视图控制器
  • 怎么把两个PDF合并成一个?这几种操作轻松合并
  • 微信小程序——视图与逻辑,页面导航(导航到 tabBar 页面,导航到非 tabBar 页面)
  • 系分 - 案例分析 - 项目管理
  • 产品---竞品分析