创建一个私有的podspec包括如下那么几个步骤

  1. 创建并设置一个私有的Spec Repo。
  2. 创建Pod所需要的项目工程文件,并且有可访问的项目版本控制地址。
  3. 创建Pod所对应的podspec文件。
  4. 本地测试配置好的podspec文件是否可用。
  5. 向私有的Spec Repo中提交podspec。
  6. 在个人项目中的Podfile中增加抽取好的Pod并使用。
  7. 更新podspec。

本地私有仓库

什么是Spec Repo?他是所有的Pods的一个索引,就是一个容器,所有公开的Pods都在这个里面,他实际是一个Git仓库,remote端在GitHub上,当我们使用Cocoapods后它会被clone到本地的~/.cocoapods/repos目录下,可以进入到这个目录看到master文件夹就是这个官方的Spec Repo了。这个master目录的结构是这个样子的。

1.在码云上创建一个私有库

https://gitee.com/Steven_Hu/HKCommonTools.git

2.将私有库添加到本地

pod repo add  REPO_NAME  SOURCE_URL

$pod repo add CommomToolSpec https://gitee.com/Steven_Hu/HKCommonTools.git

Cloning spec repo `CommomToolSpec` from `https://gitee.com/Steven_Hu/HKCommonTools.git`

3.cd 到桌面开始组件化抽取

cd ./Desktop

pod lib create HKCommonTool

Cloning `https://github.com/CocoaPods/pod-template.git` into `HKCommonTool`.
Configuring HKCommonTool template.
! Before you can create a new library we need to setup your git credentials.What is your email?> 916109796@qq.com
! Setting your email in git to 916109796@qq.comgit config user.email "916109796@qq.com"
------------------------------
To get you started we need to ask a few questions, this should only take a minute.
If this is your first time we recommend running through with the guide: - https://guides.cocoapods.org/making/using-pod-lib-create.html( hold cmd and double click links to open in a browser. )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 ]> Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]> None
Would you like to do view based testing? [ Yes / No ]> Yes
What is your class prefix?> HK
Running pod install on your new library.
Pod installation complete! There are 2 dependencies from the Podfile and 1 total pods installed.

把要抽取的工具类拖到 Pods ->Development Pods 下的Replace.m 中并替换掉它。

cd 到工程目录下 执行 pod install

4.推送到远程私有库(git远程仓库地址,或者码云等)

//关联远程仓库

在 HKCommonTool 工程目录下 执行:

$git remote add origin https://gitee.com/Steven_Hu/HKCommonTools.git

//提交到git仓库

git add .
git commit -m 'HKCommonTool初始化'
git push origin master
git push origin master -f //全局提交

5.修改 .podspec 文件并提交

Pod::Spec.new do |s|#名称s.name             = 'HKCommonTool'#版本号s.version          = '0.1.0'#摘要s.summary          = 'HKCommonTool 常用工具类归类'#描述s.description      = 'iOS开发常用的常用宏定义和工具类,网络框架等~'#远程仓库首页链接s.homepage         = 'https://gitee.com/Steven_Hu/HKCommonTools'#截图# s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'#许可证s.license          = { :type => 'MIT', :file => 'LICENSE' }#作者s.author           = { 'HJT916109796' => '916109796@qq.com' }#source来源s.source           = { :git => 'https://gitee.com/Steven_Hu/HKCommonTools.git', :tag => s.version.to_s }#社交链接# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'#开发版本s.ios.deployment_target = '9.0'#资源文件路径s.source_files = 'HKCommonTool/Classes/**/*'#资源包# s.resource_bundles = {#   'HKCommonTool' => ['HKCommonTool/Assets/*.png']# }# s.public_header_files = 'Pod/Classes/**/*.h'# s.frameworks = 'UIKit', 'MapKit'# s.dependency 'AFNetworking', '~> 2.3'
end

校验文件的正确性

$pod lib lint HKCommonTool.podspec//去掉警告$pod lib lint --allow-warnings

重新提交:

git add .
git commit -m '修改podspec文件~'
git push origin master

设置tag

git tag
git tag '0.1.0'
git push --tags

6.推送本地Spec到远程仓库

git fetch origin master

git checkout master

git branch --set-upstream-to=origin/master master

Branch 'master' set up to track remote branch 'master' from 'origin'.

git pull

pod repo update

pod repo push CommomToolSpec HKCommonTool.podspec

git push

git pull

git push origin master

7.如何使用:

编辑Podfile文件如下

编辑Podfile 必须加  git => 'https://gitee.com/Steven_Hu/HKCommonTools.git'

platform :ios, '9.0'
use_frameworks!target 'HKTools' dopod 'XCDemo'  ,:git => 'https://gitee.com/Steven_Hu/XCTool.git'pod 'HKCommonTool'  ,:git => 'https://gitee.com/Steven_Hu/HKCommonTools.git'
#  pod 'HKTools', :path => './Lib/HKTools'
#  pod 'HKTools', :podspec => '~/.cocoapods/repos/HKTools/HKTools.podspec'
end

8.需要添加依赖的组件化抽取

use_frameworks!
platform :ios, '8.0'
target 'XBTool_Example' dopod 'XBTool', :path => '../'pod 'AFNetworking', '~> 3.1.0'
end

此时找不到AFN,解决办法 将use_frameworks!删除 使用:(dynamic framework) 不使用:(static libraries)

#use_frameworks!  ---- dynamic framework
#不使用!  ---- static libraries方式
platform :ios, '8.0'
target 'XBTool_Example' dopod 'XBTool', :path => '../'pod 'AFNetworking', '~> 3.1.0'
end

9.组件化通讯原理(路由Route)

1.URL

2.Runtime+命令模式(Target-Action)。

解耦(不import,发送命令时,不需要知道请求的接收者是谁,提供TARGET分发命令)

角色划分:

Command :抽象命令类-提供接口

ConcreteCommand : 具体命令类—具体命令

Invoker:调用者

Receiver : 接收者

Client:客户类

10.其他常用命令:

//1.cd /Users/MengYu/Desktop/HKTools
pod init
//2.cd /Users/MengYu/Desktop/HKTools/Lib/
pod lib create HKTools
iOS, ObjC, Yes,None,No,HK
//3.抽取替换Replace.m
添加依赖,pod install
//4.提交码云:
cd /Users/MengYu/Desktop/HKTools/Lib/HKTools/
git remote add origin https://gitee.com/Steven_Hu/HKTools.git
git add .
git commit -m 'HKTools初始化'
git push origin master -f
//5.校验本地podspec文件是否可用
pod lib lint
$pod lib lint HKCommonTool.podspec
//去掉警告
$pod lib lint --allow-warnings
//查看报错详细信息
pod lib lint --verbose
//6.设置tag
git tag
git tag '0.1.0'
git push --tags
//7.设置推送到主干
git fetch origin master
git checkout master
git branch --set-upstream-to=origin/master master
//8.删除本地私有库
pod repo remove 私有库名字
//9.删除源
git remote remove origin
//10.克隆
git clone 仓库地址
//11.更新 速度快
pod install --verbose --no-repo-update

12.组件化抽取第二个

cd 到lib文件夹路径

pod lib create 工具类名

 CocoaPods .podspec文件配置详解

# 开放的库文件 * 表示通配
s.source_files = 'HKWebView/Classes/**/*'
#  *.{png,js,html} 表示查询png 和 js 和 html 后缀名的文件
s.resource_bundles = {
'HKWebView' => ['HKWebView/Assets/*.{png,js,html}']
}

转载于:https://www.cnblogs.com/StevenHuSir/p/ComponentBased_PrivateRepo.html

组件化开发-002-Cocoapods远程私有库使用(Private Repo)相关推荐

  1. CocoaPods远程私有库

    上一篇(让自己的开源项目支持CocoaPods集成)介绍了将自己开发的框架代码发布到Cocoapods,全球的开发者都可以通过pod search搜索到我们的框架代码以及通过pod install进行 ...

  2. iOS组件化开发实践

    目录: 1.组件化需求来源 2.组件化初识 3.组件化必备的工具使用 4.模块拆分 5.组件工程兼容swift环境 6.组件之间的通讯 7.组件化后的资源加载 8.OC工程底层换swift代码 9.总 ...

  3. 【iOS】利用CocoaPods创建私有库进行组件化开发

    之前使用CocoaPods管理过第三方库,前面也有翻译文章介绍过CocoaPods的配置方法,随着项目越来越大,很多公司会使用CocoaPods进行组件化开发,下面利用一个demo介绍一下. ###什 ...

  4. 组件化开发 ——— 制作私有库

    组件化开发 --- 制作私有库 上篇文章大致说了组件化优缺点及内容,现在就针对公共基础组件制作私有库的问题继续搞起来. 我们的原则是:将一个项目组件化拆分掉,一般会拆分一些基础组件.一些功能组件和业务 ...

  5. 组件化开发,制作Cocoapods Git库

    在项目中,如果项目功能很多而且工程浩大,需要多个技术部门或小组同时进行开发,根据独立功能模块进行分配.多个小组开发模块怎么样快速优雅的进行整合到主项目中呢?这个是时候组件化开发优势就体现出来了,每个模 ...

  6. android pod 组件化_使用 Pod 实现私有模块化管理(组件化 Pods 实现方案)

    概况 众所周知组件化是个好东西,它把项目拆分成多个模块,让每个模块能够独立出来解除各个模块之间的耦合性,作为每个独立的模块不仅仅能够使用组合的方式去组建各个不同的功能组合(前提是各个组件划分的颗粒度只 ...

  7. iOS组件化开发从开始到完整总结

    一.组件化介绍 需求来源 随着项目规模不断扩大,业务模块增多,开发过程中会有多条产品线(多人或多小组开发不同的功能);如果用传统的开发模式,会导致代码臃肿,编译速度越来越慢,开发效率低下,代码维护成本 ...

  8. git、cocoapod组件化开发常用命令

    git init:      定位到项目,然后初始化git本地仓库 git status:  若出现红色,表示项目中有修改未添加的文件,需要add.绿色正常 git add .     将所有未添加的 ...

  9. 5工程添加emwin库_手把手教你打造专属自己的远程私有库——上

    打造自己的远程私有库 我们想使用组件化的话,我们一般推荐采用pod库的形式来集成我们的组件到我们的宿主工程,那么我们首先要知道如何打造自己的专属私有远程库,我们先来看看远程私有库的一个图解 我们可以看 ...

最新文章

  1. 国内最火的五款HTML5前端开发框架
  2. unity项目源码_在Unity中使用protobuf
  3. 对象创建的过程细节是怎样的?一起来探讨内存变化细节
  4. IBASE view WD_DESTROY - ON_NEW_FOCUS
  5. 146. LRU 缓存机制
  6. JS动态插入HTML后不能执行后续JQUERY操作
  7. android java.rmi不存在_ANDROID_HOME'环境变量设置为不存在的路径Jenkins
  8. python如何运用ols_python - 如何在python中使用OLSResults.f_test与实验组进行测试 - SO中文参考 - www.soinside.com...
  9. c语言 数组 迷宫,迷宫问题(C语言实现)
  10. 一维均值滤波算法matlab,用MATLAB编程实现均值滤波算法?
  11. [FAQ21153]MT6761/MT6762/MT6765平台搭配LPDDR4 注意事项
  12. tar:time stamp in the future
  13. vue 集成环信 web im 加 一对一视频通话
  14. 超级无敌diao炸天的手写堆
  15. microchip-02之MCC工具安装
  16. 无线广告屏]无线模块
  17. 福昕 关闭互联PDF
  18. 赛格曹晓冬分享实录:线下仍是智能硬件产品的主要消费渠道
  19. Exercise – SE Technical Boot Camp Hands-on Exercises
  20. 车载诊断数据库ODX——ODX参数解析类型(上)

热门文章

  1. mysql 独享表空间_Mysql 独享表空间
  2. matlab中三维非线性拟合,matlab非线性拟合与绘制三维曲面
  3. uuid会重复吗_UUID的版本你知道吗
  4. 优秀自我简介200字_自我简介200字左右7篇
  5. iOS基本UI元素示例教程
  6. callable线程池示例_Java Callable Future示例
  7. python 变量命名空间_Python命名空间– Python变量范围
  8. C语言基础教程篇之程序结构
  9. C++的冒泡排序法的原理是什么?
  10. Mac终端的一些操作命令