1.创建自己的远程私有索引库,用来存放私有框架的.podspec文件,并将其添加到本地索引

我用的仓库是码云(https://gitee.com),用自己的账号新建一个私有仓库,我命名为PrivatePodRepo;

将PrivatePodRepo添加到本地索引.

执行命令查看本地索引库:

pod repo list

然后执行将PrivatePodRepo添加到本地索引命令:

pod repo add PrivatePodRepo https://gitee.com/alan12138/PrivatePodRepo.git

执行完成再次查看本地索引库:

pod repo list

可以看到已经添加成功.

2.再创建一个远程私有库用来存放私有组件,命名为PrivateComponents

3.用pod命令创建Xcode工程,也就是组件代码工程

切换到组件代码想要存放的本地目录,执行以下创建命令:

pod lib create ComponentsA

用这条命令直接生成模板在模板中编辑不容易出错,如果自己用Xcode创建新项目,用

pod spec create A_Section  https://gitee.com/xxxxxxx/A_Section.git

 这条命令去创建.podspec文件,再去编辑的话,很容易遇到一些奇奇怪怪的错误,比如死活报错找不到source_files,而花费时间解决这些奇怪的麻烦并不明智.

可以看到这条命令clone下一个模板工程,然后需要填写一些个人信息和选项,之后便创建成功,并自动为你打开这个模板工程,之后便可以在这个工程里写组件代码了.

4.编辑组件代码工程

可以查看模板工程的目录结构,主工程在Example目录里,通过查看Podfile文件

可以看到主工程引用了本地仓库ComponentsA文件夹,其中Classes所在文件夹,是模板用来存放引用本地组件的位置

如果不需要引用本地组件,直接删除ReplaceMe.m文件,不去操作这个目录即可.

编写一个简单的分类文件用于测试.

//NSObject+AT.h
@interface NSObject (AT)
+ (void)printName:(NSString *)name;
@end // NSObject+AT.m
#import "NSObject+AT.h" @implementation NSObject (AT)
+ (void)printName:(NSString *)name {
NSLog(@"------- %@ -------",name);
}
@end

查看项目目录,发现并没有刷新代码文件:

需要执行

pod install

或者直接右键delete,执行完再次打开项目文件可以发现修改已经生效,在ATViewController使用一下这个分类方法.

#import "NSObject+AT.h"

@interface ATViewController ()

@end

@implementation ATViewController

- (void)viewDidLoad
{
[super viewDidLoad];
[NSObject printName:@"夏帆帆"];
}

运行项目可以看到打印执行.

5.编辑并验证ComponentsA.podspec文件

我这里经过一些修改,push了两次,所以版本号是0.2.0,只要保证每次push的版本号和这里一致就可以

其中组件引用路径就是以后这个组件被主项目引用的代码文件的路径,

到Podfile文件中补上AFNetworking依赖库,(这里是为了演示组件库有其他依赖的情况)

执行

pod install

执行完毕打开项目,引用一下

运行项目,成功运行,引用成功.

接下来验证ComponentsA.podspec文件是否有问题,

pod lib lint --allow-warnings

执行结果,验证通过

一切处理完毕之后便可以将本地代码提交到之前新建的远程组件仓库了.

有闲心的可以试一下用命令把本地文件和远程仓库关联然后提交,我试了一下报乱七八糟的错,干脆我直接把远程仓库clone下来,把项目拖进去,我觉得这样比花时间去研究那些命令错误直接多了,而且简单方便,不会出错.

然后执行

git status

git add .

git commit -m "init"

git push

本地组件代码提交到远程仓库.

然后需要为代码打tag,并且需要和.podspec文件中的版本号保持一致,并提交

git tag 0.2.0
git push --tags 

远程验证.podspec文件

pod spec lint --allow-warnings

验证通过.

6.将ComponentsA.podspec文件提交到之前添加的本地私有索引库PrivatePodRepo

pod repo push PrivatePodRepo ComponentsA.podspec --verbose --allow-warnings 

执行完毕如果成功可以在PrivatePodRepo仓库看到提交的索引文件.因为执行这条命令验证.podspec文件通过后会自动上传到在远程索引库.

 

7.使用组件

新创建一个工程使用试一下.

执行

pod init

  之后就有了Podfile文件,打开Podfile文件,source '远程索引库'

(这里我还用了清华的镜像,速度比github要快很多)因为ComponentsA依赖了AFN,所以它会自动去安装AFN,如果不source 'CocoaPods库'的话可能会报错找不到AFN

执行

pod install

  

可以看到安装成功,在代码里试用一下:

再次运行项目文件,可以看到执行效果,至此整个流程完毕.

搭建CocoaPods远程私有库的更多相关文章

  1. iOS开发 - CocoaPods远程私有库从0到1

    1. 创建主工程  路径:/Users/Funky/Desktop/CocoaPodRemoteLib/MyMainProject/MyMainProject.xcodeproj 2. 在码云(htt ...

  2. iOS代码组件化--利用cocoaPods创建私有库

    如果项目模块多,模块间逻辑复杂,我们发现多个人同时维护一个代码仓库需要十分小心,一不小心,造成冲突,解决起来很烦,相信很多人都遇到手工删除合并的冲突的文件的经历. 如果利用组件化思想,每个人维护自己的 ...

  3. iOS组件化开发一远程私有库的升级(三)

    一.远程私有库的升级 1. 把新增的类 拖入到 classes 文件夹中 : 2. 修改 pod.spec 文件的 s.verson = ‘0.2.0': 二.更新远程仓库 1.cd 到本地仓库的位置 ...

  4. iOS 组件化开发之使用CocoaPod制作自己的远程私有库

    随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好 ...

  5. 远程私有库的创建 pod 组件化

    参考:   http://www.cnblogs.com/hs-funky/p/6780203.html http://www.jianshu.com/p/4b63dfbd8be7 http://ww ...

  6. CocoaPods - 发布自己的模块(公有库、私有库)

    CocoaPods发布框架到远程公有库 1.编写代码~上传远程仓库 git init git add . git commit -m '提交到本地分支' //关联远程仓库 git remote add ...

  7. iOS组件化开发入门 —— 提交自己的私有库

    前言:本人也是初次接触组件化开发,感觉现有的资料太繁杂,就简单整理了一下,在此跟大家分享一些入手的经验,主要就是描述cocoapods的私有库封装和提交.组件化开发是个大的议题,涉及到架构思路.设计模 ...

  8. Mac终端的Cocoapods创建自己的私有库和公有库

    一,前言 为什么要用Cocopods 通常在开发的过程中,大多时候,我们会处理一类相同的操作,比如对于字符串String的邮箱验证,是否为空,手机号验证,或者一些UIView的动画操作,我们为了避免写 ...

  9. 利用Cocoapods、SVN 创建私有库实现方案(yoowei)

    由于项目年后要进行组件化,考虑到如果公司内部实现一些私有的组件,不对外公开,而又想在不同项目中使用,该怎么办呢? 使用Cocoapods制作私有库就完美的解决了这个问题.下图就是使用私有库带给我们的好 ...

随机推荐

  1. maven国内镜像、国内外仓库(直接下载jar)

    阿里: https://maven.aliyun.com/mvn/search 官方: http://repo.maven.apache.org/maven2/ maven仓库 阿里巴巴的镜像仓库, ...

  2. 第九周总结&实验报告七

    小结:这周请了一天的假,所以回来的时候有些知识点跟不上,不过在第二节课学到了关于IO的知识很重要,对于这次的实验也有些吃力,这周的知识点主要集中在书上,在各种不同条件下学习运用什么样的代码.   一. ...

  3. Java JDBC 基础

    JDBC API 包含以下几个核心部分: 1:JDBC 驱动 2:Connections (连接) 3:Statements (声明) 4:Result Sets (结果集) JDBC: 打开数据库连 ...

  4. 后盾网lavarel视频项目---vue-axios基本用法

    后盾网lavarel视频项目---vue-axios基本用法 一.总结 一句话总结: 都是npm安装,然后import引入vue,然后按手册使用就好了,很简单 二.vue-axios基本用法 转自或参 ...

  5. spark 笔记 8: Stage

    Stage 是一组独立的任务,他们在一个job中执行相同的功能(function),功能的划分是以shuffle为边界的.DAG调度器以拓扑顺序执行同一个Stage中的task. /** * A st ...

  6. 对保存的参数checkpoints进行可视化读取 1.pywrap_tensorflow.NewCheckpoint(获得checkpoint的读取器) 2.np.save(对npy文件进行保存) 3.tl.file.load_npy_to_any(对保存的npy文件进行读取)

    1. pywrap_tensorflow.NewCheckpoint(path)获得checkpoint的读取器 参数说明: path表示checkpoint的路径 2.np.save(path, d ...

  7. 访问 Django 项目的静态资源

    from django.urls import path, re_path from django.conf import settingsfrom django.views.static impor ...

  8. Python学习之表的介绍

    9.4 表的介绍 存储引擎 数据的存储方式就是存储引擎,引擎不同,数据的存储方式就不同 MySQL中比较重要的引擎: InnoDB:mysql5.6以上,默认的存储方式 ​ 支持 transactio ...

  9. 将dos窗口调白教程

    将dos弹出窗口调白教程 第1步:同时按住Win+R键,输入cmd 第2步:右键点击标题栏 第3步:点击默认值,然后再点击颜色 第四步:将窗口颜色设置为白色,字体颜色设置为黑色(效果测试)

  10. AGC037 C Numbers on a Circle【思维】

    题目传送门 题意 这道题被某大佬改编拿来出成考试题,是长这个样子的: 好的,其实这才是真正的题意: 给定初始序列和最终序列,每次选择一个数变成自己和相邻2个数的和.问初始序列是否可以变为最终序列,若可 ...