ios-组件化开发之私有库制作与版本更新(持续更新)(代码片段)

iOS_developer_zhong iOS_developer_zhong     2022-12-06     355

关键词:

一.私有库制作与使用

准备条件

  1. github账号
  2. 设置好SSH
  3. 电脑有安装好Cocoapods环境

1. 创建远程索引库

在github上, new Repository 一个空的项目,项目如下: 下载项目

2. 创建本地索引库

注意: 名称最好和远程索引库保持一致

  1. 打开终端, 进入cocoapods配置目录下:
    cd /Users/hh/.cocoapods/repos
  2. 创建本地索引库,并与远程索引库关联
    格式:pod repo add 本地索引库名字 远程索引库的地址
    pod repo add ZgrTool https://github.com/zhonggaorong/ZgrTool.git
  3. 打开终端查看是否添加成功。输入
    pod repo ,如图

3. 创建远程代码库

在github上, new Repository 一个空的项目,项目如下: 下载项目

4. 创建本地代码库

  1. 通过终端 CD进入创建本地工程的目录。
  2. 终端操作。
pod lib create TestTwo 
//开始配置
What platform do you want to use?? [ iOS / macOS ]  什么平台? 
 > ios
What language do you want to use?? [ Swift / ObjC ] 用什么语言?
 > ObjC 
Would you like to include a demo application with your library? [ Yes / No ] 创建自己的库的同时创造demo工程 
 > Yes 
Which testing frameworks will you use? [ Specta / Kiwi / None ]  是否集成测试框架
 > None

Would you like to do view based testing? [ Yes / No ]是否基于View做测试
 > NO

What is your class prefix? 工程前缀
 > Zgr
  1. 创建成功后,会自动打开工程。 项目结构如下。
  2. 代码存放区
    把相关代码全部放在这个目录,如果是不想暴露代码,就制作成动态库。

5. 修改本地代码的 podSpec文件 重点

下面表明== 需要修改 ==的地方都要看看。

Pod::Spec.new do |s|
  s.name             = 'TestTwo'
  #需要修改,版本号: 与后面上传远程代码库的tag保持一致
  s.version          = '1.0.0'   
  #需要修改,库标题
  s.summary          = '我是第二个组件.'
  
  #需要修改,库描述,一定是这种格式
  s.description      = <<-DESC
                        我是第二个组件的描述文件,需要比标题长
                       DESC
                       
  #可不用修改
  s.homepage         = 'https://github.com/zhonggaorong/TestTwo'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          =  :type => 'MIT', :file => 'LICENSE' 
  #需要修改,作者信息
  s.author           =  'zhonggaorong' => 'zhonggaorong@qishihuandian.com' 
  #需要修改,github远程代码库的下载链接,文章开始创建的
  s.source           =  :git => 'https://github.com/zhonggaorong/TestTwo.git', :tag => s.version.to_s 
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

#需要修改,能使用的最低的iOS版本
  s.ios.deployment_target = '9.0'

#需要修改,代码文件的目录
  s.source_files = 'TestTwo/**/*'
  
  #需要修改,资源文件: 图片目录
  # s.resource_bundles = 
  #   'TestTwo' => ['TestTwo/Assets/*.png']
  # 

  # s.public_header_files = 'Pod/Classes/**/*.h'
  #需要修改,依赖的framework
  # s.frameworks = 'UIKit', 'MapKit'
  #需要修改,依赖的第三方库
  # s.dependency 'AFNetworking', '~> 2.3'
end

5.1 存放代码的目录,一定要放在这个地方 Classes文件下

5.2 编译项目, 从根目录执行 cd Example,然后执行 pod install ,进行关联。

6. 编译通过后,通过终端命令上传代码至远端代码库。

//1:代码加入缓冲区
git add .
//2:把代码提交到本地库 
git commit -m “xxx"
//3:本地源与远程源进行连接
git remote add origin 远程代码仓库地址
//4:代码推送到远端
git push origin master (第一次push失败,就用强制push命令 git push -f origin master )
//5:本地代码库打上版本号
git tag 版本号 (注:这里的版本号必须和podspec里写的版本号一致)
//6: push到远端代码库  
git push --tags

//备注 查看tag 
git tag
// 备注 删除这个tag 
git tag -d 1.0.0

7. 验证podspec文件是否合理。终端命令:先进入本地项目的根目录。

pod spec lint --verbose --allow-warnings --use-modular-headers --sources='https://github.com/CocoaPods/Specs.git'

//注释:
/*
--verbose:  打印详细信息
--allow-warnings:  无关紧要的警告可以通过检查
--use-modular-headers: 使用了oc与swift混编
--sources : 依赖了第三方库,需要指定源
*/

出现下面这个图:说明验证通过。

8. 最后一步:添加到远端索引库。 执行命令

格式: $ pod repo push 远端索引库名 当前库工程的podspec 

如: 
pod repo push ZgrTool TestTwo.podspec

问题总结:

问题一:
fatal: unable to access ‘https://github.com/zhonggaorong/ZgrTool.git/’: LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

解决办法:
先执行: git config --global --add remote.origin.proxy “”
在执行: pod repo push ZgrTool TestTwo.podspec

9. 最后一步:开始使用。

在使用工程中的Podfile中
如下进行使用:

二.私有库的更新

组件化开发3-cocoapods私有库制作

一、创建索引项目ZHMCSSpec   1-1在代码托管网站上建立索引项目ZHMCSSpec(以这个名称为例)  1-2在本地创建ZHMCSSpec,并与远程索引建立联系  podrepoaddZHMCSSpec‘[email protected]:zhenghaimin/ZHMCSSpec.git‘  1-3验证本地索引... 查看详情

ios之深入解析cocoapods的工作原理与源码分析

...个Xcode的workspace来将这些第三方库与工程连接起来,方便开发使用。Cocoapods能让我们集中统一管理第三方开源库,为开发节省设置和更新第三方开源库的时间,使用Cocoapods的目的就是能自动的、集中的、直观的管理第三方库。使... 查看详情

openstack搭建企业私有云三:计算服务(持续更新...)(代码片段)

计算服务概览使用OpenStack计算服务来托管和管理云计算系统。OpenStack计算服务是基础设施即服务(Iaas)系统的主要部分,模块主要由python实现。OpenStack计算组件请求OpenStackIdentity服务进行认证;请求OpenStackImage服务提供磁盘镜像... 查看详情

springioplatform与springboot版本对应关系(持续更新)(代码片段)

...发行版,提供一组经过管理的依赖关系,同时让开发人员完全控制只部署他们需要的部分。SpringIO是100%的开源、精益和模块化的。使用样例<parent><groupId>io.spring.platform&l 查看详情

原生开发之css样式问题(持续更新)

·移动端开发将div高度设置为设备高度div{Height:100vh;}·select选择器文字设置:/*select文字右对齐*/select{direction:rtl;}/*文字垂直居中*/Select{height:30px;line-height:18px;padding:2px0;}·textarea、input、select等表单控件在active状态下会出现的边框 ... 查看详情

①⭐全网首发☀️数据有道之数据库技术❤️干货大全持续更新❗❗❗

目录1.数据库应用系统开发方法1.1 数据库应用系统概述考点1 数据库系统和数据库应用系统的区别考点2 数据库应用系统设计与开发的定义1.2 数据库应用系统生命周期考点1 软件工程与软件开发方法考点2 DBAS生命周期模... 查看详情

小程序开发之开发工具

...页面文案IV版本更新内容1.4版本更新内容seealso引言HBuliderX开发版:https://www.dcloud.io/hbuilderx.html微信小程序开发工具:https://developers.we 查看详情

unity大版本更新之apk的下载与覆盖安装(代码片段)

  作为一个游戏开发者,更新这个技能是必不可少的!更新分为游戏内的更新,也就是所谓的资源热更包括AssetBundle更新和代码更新,代码其实也是所谓的二进制文件,在安卓上和普通资源文件毫无差异,然而在IOS上差别大来... 查看详情

将版本保留在私有存储库之外

】将版本保留在私有存储库之外【英文标题】:Keepingreleasesoutofaprivaterepository【发布时间】:2015-01-2701:50:32【问题描述】:我有一个带有源代码/版本的存储库,用于Mac应用程序和调节版本更新的服务器。我有一个用于应用程序的... 查看详情

软件测试之面试汇总(持续更新中)(代码片段)

...维护(runningmaintrnacne)2. 在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决?1.将问题提交到缺陷管理库里面进行备案。2.要获取判断的依据和标准:3.根据需求说明书、产品说明、设计文档等,确认实... 查看详情

form组件常用校验规则-1(持续更新中~)

前言最近感触越来越深,就是要经常分享,分享自己遇到的坑,分享自己的解决办法,分享自己的各种经验,这非常有必要。因为,我遇到问题第一反应是先看看别人是怎么解决的,肯定有人也有相同的想法,那这个时候就需要... 查看详情

idea常用的小技巧汇总,java新手上路必备,快上车!(持续更新)

...IDEA常用设置6.1随心所欲之自定义背景与字体大小设置6.2开发必备之代码提示忽略大小写6.3开发必备之设置自动导包功能6.4开发必备之代码缩进及全局UTF-8设置七、快速编码之快捷键7.1基础技能之修改默认快捷键方式及自定义快捷... 查看详情

带你深入理解3.4.2的版本更新,对用户带来了什么?

JNPF快速开发平台迎来了3.4.2JAVA版本的更新,还有很多朋友可能对我们平台更新的具体内容不甚理解,本文就带你从在线开发的控件组件的角度看看3.4.2版本为用户带来了那些改变!新增控件组件表单设计基础控件区新增了链接组... 查看详情

gradle常用技巧(持续更新)(代码片段)

统一依赖版本号项目中会依赖各种库,各个库或各个Module可能分别依赖相同库的各个版本,可以通过Gradle来实现统一工程中指定库使用指定版本。方式如下。在工程根目录中的build.gradle中添加指令:subprojectsproject.confi... 查看详情

gradle常用技巧(持续更新)(代码片段)

统一依赖版本号项目中会依赖各种库,各个库或各个Module可能分别依赖相同库的各个版本,可以通过Gradle来实现统一工程中指定库使用指定版本。方式如下。在工程根目录中的build.gradle中添加指令:subprojectsproject.confi... 查看详情

ios开发之获取app在appstore中的版本号

开发中我们可能会遇到这样的需求,当AppStore中有新版本迭代更新,在用户点开APP的时候弹框提醒客户去AppStore更新APP。这里面就有个关键点,判断当前APP与AppStore中的版本高低,若一样,则无需进行提示;... 查看详情

ios之深入解析cocoapods的工作原理与源码分析

...个Xcode的workspace来将这些第三方库与工程连接起来,方便开发使用。Cocoapods能让我们集中统一管理第三方开源库,为开发节省设置和更新第三方开源库的时间,使用Cocoapods的目的就是能自动的、集 查看详情

个人整理可编辑pdf电子书下载(持续更新)

...+描述》《算法基础:打开算法之门》《深入理解Nginx模块开发与架构解析(第二版)》《鸟叔的私房菜:基础学 查看详情