美文网首页iOS开发锦集iOS组件化cocoapods svn git
iOS-本地私有库和远程私有库.其实并不难

iOS-本地私有库和远程私有库.其实并不难

作者: 会跳舞的狮子 | 来源:发表于2017-03-17 16:25 被阅读3488次

私有库的介绍

为什么要学习私有库?
  • 因为随着项目代码的体积不断增加,为了更好的管理项目,我们需要借助CocoaPods版本管理工具对原有项目进行拆分,然后创建对应的私有库进行保存
什么是本地私有库?什么是远程私有库呢?
  • 举个例子: 本地私有库就是你将钱(代码),放在身上(放在当前电脑中某个文件夹), 而远程私有库呢,就是你将钱放在第三方平台(支付宝,银行)之类的
为什么是私有库?
  • 私有的意思是只有相对应权限的人才能访问,因为项目是公司的根本,正常人都不会选择开源公司的项目,只会开源对应的框架
本地私有库和远程私有库的区别是什么?
  • 本地私有库:
    1,需要主动指明路径,如果调整路径,需要修改相关的配置
    2,版本升级不好维护
    3,不能团队共享

  • 远程私有库可以将你的代码传到第三方托管平台进行公司内部开发人员共享,从而实现组件化开发模式

私有库应该放在什么地方呢?
  • 本地私有库放在本地(电脑上的某个文件夹),而远程私有库需要放在第三方托管平台(如:github,码云,码市)

本地私有库

创建一个仓库(文件夹), 存储在本地, 在本地的其他工程中直接使用

流程:
创建一个文件夹,把你需要拆分的代码放到文件夹中(例如:基类,分类,工具类等)
然后通过终端把你的这个文件夹进行git进行管理

git init  /   git add. / git commit -m 'xx'/

之后创建个spec文件进行框架的描述

pod spec create xxx(你创建的文件夹的名字)

用Xcode打开spec文件进行编辑框架的描述

s.name = "框架的名字"
s.version = "版本号"
s.summary = "简单描述" 
s.description "详细猫叔"  #要比简单描述长度大
s.homepage = "主页"
s.license = "MIT" # 开放协议根据自己的需要填写
s.autor = "作者"
s.platform = "支持平台和版本"
s.soure = "托管git代码仓库地址"
s.souce_files = "soure中关键代码的路径"
s.requires_are = true # 支持ARC
进行完上面的步骤,你简单的本地私有库就已经搭建好了
#简单点   搭建仓库的方式简单点...

你现在可以进行主工程项目进行cocoapods管理

cd 进入你的主工程
pod init 初始化仓库
然后对你的Podfile文件进行编写
编写podfile文件

:path => 后面跟的是你文件的本地路径 ../ 是跳到上一级目录
好,配置完成之后 直接pod install 安装你本地的私有化库吧
运行安装完美


####以上的方案成功之后  下面讲解本地私有库的优化
- ######因为之前的本地库(你拆分的分类或者基类文件) 是用来导入到主工程的,所以在导入主工程之前我们需要先测试,保证当前这个库的稳定性

>创建一个LibTest文件夹 ,将你的本地库拖进去,之后在LibTest文件中创建一个Example工程进行测试
测试很简单 上面已经提过,  将pod init 初始化  然后在podfile文件中配置本地库  然后pod install 导入就OK了 



###本地私有库的优化 

进入LibTest文件夹里面
创建一个pods库的模板库
pod lib create xxx(你库的名字例如:LionBase)

之后会提示你输入对应的信息

![配置信息](http:https://img.haomeiwen.com/i1846074/d936a206c70f4a2a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![需要替换的文件](http:https://img.haomeiwen.com/i1846074/82b818961b5f810a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

之后直接 pod install 就OK啦

![文件夹目录](http:https://img.haomeiwen.com/i1846074/fc8ba81424c9afa8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

###远程私有库
>#####现在这个是重点了  因为在开发中我们都是使用远程私有库
如果有不理解或者疑问,可以简信私聊我


#####one 远程私有库的创建
首先如果需要在第三方的托管平台创建一个私有的库(可以在免费的 码云或者码市 )
- 创建私有索引库

![索引库](http:https://img.haomeiwen.com/i1846074/185aa158dd880a25.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 添加repo索引库

pod repo add LionFMSpecs xxxx(你刚创建的仓库地址 )

![Paste_Image.png](http:https://img.haomeiwen.com/i1846074/0ddc3ae787db6d3d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 如果提示下面的信息 说明你电脑没有配置公钥和私钥
![错误信息](http:https://img.haomeiwen.com/i1846074/bee31a3d5c9eb2f3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 添加公钥和私钥 

终端输入 ssh-keygen


 
![公钥和私钥](http:https://img.haomeiwen.com/i1846074/2f02eeb9566a6e56.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- OK 完成上面的步骤之后
在码市上创建一个基础库 (存放分类 工具类 这些)


![基础库](http:https://img.haomeiwen.com/i1846074/64c05542fbc30953.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 将模板库clone下来

![模板库](http:https://img.haomeiwen.com/i1846074/bb3d1e0fd94ff8aa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

 之后进行配置  将你的库拖进对应的文件夹中(LionFMBase)
再进入Example(测试工程) 进行导入基础类 pod install

ok 看下图

![配置信息](http:https://img.haomeiwen.com/i1846074/ef3108b99a0ed093.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

s.name = "框架的名字"
s.version = "版本号"
s.summary = "简单描述"
s.description "详细猫叔" #要比简单描述长度大
s.homepage = "主页"
s.license = "MIT" # 开放协议根据自己的需要填写
s.autor = "作者"
s.platform = "支持平台和版本"
s.soure = "托管git代码仓库地址"
s.souce_files = "soure中关键代码的路径"
s.requires_are = true # 支持ARC


  配置完之后就可以提交到你远程的私有库了 第一次要进行关联!!

pod stauts
pod add .
pod commit -m 'xx'
//添加关联
git remote add origin 你那个Base库的地址
//提交
git push origin master
如果第一次提交还会要求你验证账号和密码

现在就开始绑定tag了
可以通过git tag 查看tag
git tag '0.1.0'
git psh --tags
提交完之后 可以用下面的命令行验证
pod spec lint 验证远程
pod lib lint 验证本地

开始提交
pod repo 查看索引库
pod repo push LionFMSpecs LionFMBase.podspec

如果第一次配置  会比较麻烦  好了 只剩最后一步了

>打开你的主工程  然后来到podfile文件进行配置

![配置](http:https://img.haomeiwen.com/i1846074/1673f36a66feb633.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

如果你不配置系统的索引库 会找不到其他的库 只能找到你自己创建的仓库
最近一个命令   pod install 
Nice 完成了   



- ###本地私有库的升级维护
>当拆分的库需要进行修改或者添加新的内容
修改或者添加完之后  在测试工程进行pod install 进行更新导入

之后进入你拆分的库的podspec 将版本更改

pod status
pod add .
pod commit -m 'xxx'
pod push origin master

将代码传到远程的私有库 完成之后  更新tag 

git tag '0.2.0'
git push --tags

pod spec lint 验证

更新自己的库

pod repo push LionFMSpecs LionFMBase.podspec

可以进入主工程了  pod update  --no-repo-update进行更新

如果你的私有库有引用外界的框架 只需要在 podspec  添加 s.dependency '你引用的库'就OK了  详情见下图

![Paste_Image.png](http:https://img.haomeiwen.com/i1846074/4010d9879f1ae74d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![Paste_Image.png](http:https://img.haomeiwen.com/i1846074/d92de1b117809624.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

`
####下面是流程图  方便各位理解

![流程图](http:https://img.haomeiwen.com/i1846074/326facf3abf95435.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

`
###理解动手然后转化为自己的知识 ,如果遇到不明白的欢迎提出意见
`

相关文章

  • iOS组件化开发远程私有库

    一、本地化私有库 工程创建好之后可以用作本地私有库,通过path来引入本地私有库 二、远程私有库 创建远程私有库,...

  • 创建私有库

    Part1私有索引库(存放.podSpec文件) 私有索引库分为本地私有索引库和远程私有索引库。 本地索引库 可以...

  • iOS-本地私有库和远程私有库.其实并不难

    私有库的介绍 为什么要学习私有库? 因为随着项目代码的体积不断增加,为了更好的管理项目,我们需要借助CocoaPo...

  • 组件化(第二篇)

    组件化 一、本地私有库方案优化二、远程私有库三、如何使用远端私有库四、远程私有库的升级五、远程私有库依赖问题六、远...

  • 组件化开发(四)本地私有库

    通过本地私有库实现组件化开发 组件化开发分为本地私有库和远程私有库,这里我们先来学习如何通过本地私有库实现组件化的...

  • iOS创建私有库

    iOS创建私有库 创建本地私有库索引和远程私有库索引关联 pod repo addSGSpecshttp://12...

  • 组件化三:远程私有库

    远程私有库跟本地私有库的区别就是 先看看那远程私有库的原理 先创建一个远程的库,把本地的库关联到远程的库中,然后修...

  • iOS-使用CocoaPods创建私有仓库(一)

    iOS-创建私有仓库步骤 一、创建本地pod私有库 cd到你想创建pod库工程的路径,并执行pod库的创建。命令如...

  • 创建pod私有库

    iOS创建私有库 1. 新建私有库 2.命令行创建本地私有库索引和远程私有库索引关联 pod repo add S...

  • iOS-组件化开发

    一、创建远程私有索引库 1. 创建远程私有索引库,然后复制仓库的地址 2. 打开终端,将远程私有库关联到本地 ...

网友评论

  • BetterG:为什么我引用的库较多的时候,更新时间会非常长,有什么可以优化的方法吗?
  • f86570ad7681:我现在接手了一个外包的项目,里面有好多第三方都是放在私有库上面。我现在有一个远程私有库的地址,我如何把这个远程私有库下载到本地?
  • 文斯莫克丶谢:楼主,请问我私有库创建成功,但是在项目中引入后,没有文件夹,所有文件都显示在一起,如果我使用ss.subspec 'NSString' do |cc| ,创建子类文件夹,但是引用其他文件夹的内容,其他文件夹内的文件就可能不存在,这是问什么哎???
  • handsome丶亮:请教一下楼主,我在自己电脑上已经把代码上传到远程私有库上了,在自己电脑上也可以通过pod install导入到自己项目中。
    然后我在另外一台电脑上通过pod repo add 命令把远程私有库索引添加到本地了,已经在~/.cocoapods/repos目录下有了这个私有库的文件夹了,pod search也能搜索的到,在项目的Podfile也配置了source路径,但是当我pod install的时候就报错:
    - `WLTCommon (~> 1.0.0)` required by `Podfile`

    Specs satisfying the `WLTCommon (~> 1.0.0)` dependency were found, but they required a higher minimum deployment target.
    楼主知道是为啥么?
  • 简简蜗牛:你好,请问一下我在配置podspec时为什么总是报一下错误 s.homepage和s.source经检查也没有问题
    pod lib lint --no-clean

    -> LFont (3.0.3)
    - ERROR | unknown: Encountered an unknown error (uninitialized constant REST::DisconnectedError) during validation.

    Pods workspace available at `/var/folders/ks/20rcgw797bx14qg6ct5585d80000gn/T/CocoaPods-Lint-20170917-2357-rritum-LFont/App.xcworkspace` for inspection.

    [!] LFont did not pass validation, due to 1 error
  • Dimon_Hu:pod stauts
    pod add .
    pod commit -m 'xx' 全部应该是git吧?
  • 肆意二货:本地验证spec文件,依赖shareSDK,报错注册的方法找不到。不知道为什么。
    error: /Users/maowo-001/Desktop/SmartMall2C_Componented/SmartMall2C/ShareModule/Actions/Target_share.m:43:15: error: no known class method for selector
    'registerApp:activePlatforms:onImport:onConfiguration:'

    这是podspec分享模块的具体的依赖。
    s.subspec 'share' do |share|
    share.source_files = 'SmartMall2C/ShareModule/**/*.{h,m}'
    share.resources = 'SmartMall2C/ShareModule/**/*.{xib}'
    share.resources = 'SmartMall2C/ShareModule/Assets/ShareModule.xcassets/**/*.{png,gif}'
    share.dependency 'SmartMall2C/base'
    share.dependency 'ShareSDK3/ShareSDKPlatforms/WeChat'
    end
  • 翀鹰精灵:我想问哈,我已经实现了,并且上传了远程私有库,但是我如何把同事加入,就是同事和我有相等的权限,,可以修改库.我将同事的ssh加入了,并不行
  • 8dbf622540f8:小马哥的视频整理真给力,收藏了
    翀鹰精灵:O(∩_∩)O哈哈~ 一看都是老司机,一眼就看出来了,正好前两天我也刚刚看过.
  • 会疼的白痴:群主,我现在已经配置好了,已经上传代码了,可是别人怎么用啊!我现在能访问我的私有库和pod也能搜索到,但是同事不能
    会疼的白痴:@会跳舞的狮子 我在哪里给他分配权限啊,我已经拿到他的公钥了,并且在coding.net中配置了,还需要怎么给他分权限啊
    会跳舞的狮子:给你的同事加入权限
  • 七夜叹:你好, pod lib create xxx这句命令之后,我这里没有可以输入的命令,直接是系统生成的spec文件
    会跳舞的狮子: pod lib create xxx 是你需要创建库的名称
  • 747071ac3c1d:请教个问题 当我用指令 pod lib lint 验证本地的podspec文件,报如下错误 很奇怪 我pod search是可以收到的 但是podsepc就是验证不通过 一直报如下的错误 大神 求指点
    -> FMHomeAnchorLib (0.1.0)
    - WARN | url: The URL (http://git.oschina.net/appbanana/fmhomeanchorlib) is not reachable.
    - ERROR | [iOS] unknown: Encountered an unknown error (Unable to find a specification for `FMBaseLib/Category` depended upon by `FMHomeAnchorLib`) during validation.

    [!] FMHomeAnchorLib did not pass validation, due to 1 error and 1 warning.
    You can use the `--no-clean` option to inspect any issue.
    747071ac3c1d:@佘红响 是的 那个homepage 本身没有多大意义,只要你的source配置对就可以了
    佘红响:因为你创建的是私有库, 所以该地址无法访问(你可以复制该地址去浏览器就知道可不可以访问了). 作为远程私有库来说, homepage本身并没有多大意义了, 你可以随便置一个可以访问的地址, 比如你公司的首页.
  • 新地球说着一口陌生腔调:创建私有库之前的工作是 生成framework吧?
    会跳舞的狮子:先建立好自己的主框架 然后根据你的业务对应的基础组件,提供一个API供外面的使用的时候调用

本文标题:iOS-本地私有库和远程私有库.其实并不难

本文链接:https://www.haomeiwen.com/subject/bgednttx.html