2018-12-27如何在局域网使用cocopods

在某些公司的局域网内,我们可能是无法访问github网站的。如果做iOS开发,我们需要这些第三方库依赖。如何通过github上的开源库,我们来设置自己的依赖呢。

通过下面这些操作,你可以对 git的specs索引库有更深的理解。

以MJRefresh为例,在一台可以访问github的电脑,找到github上git地址addressA
git clone addressA
将MJRefresh 克隆到本地

将代码复制到不能访问github的电脑
cd到当前文件夹
git remote -v 查看当前的远程地址,是实际上github的仓库地址,名称为origin

git remote add me addressB
该操作是添加新的远端仓库地址。addressB是你创建的git仓库地址,别名是me

git push me 推送到远端代码
git push me --tags 这一步很关键。
因为有了这一步,第三方库就是有版本号。我们使用的pod 'MJRefresh' ,'3.1.2'命令中的3.1.2就是对应的tag号。

但是:做到了以上这些还不够。我们即使在Podfile文件中头部添加这句话
source 'https://xxxx.com/myCocoaPods/MJRefrsh.git'
或者是这样写
pod 'MJRefresh' ,'3.1.2' , :source => 'https://xxxx.com/myCocoaPods/MJRefrsh.git'

为什么会这样呢?

回到你的finder 打开如下路径:/用户/MacUserName/.cocoapods
或者shift+command+. 打开显示隐藏文件夹
在这个路径下(/用户/fjzlsc/.cocoapods/repos/master/specs)我们可以看到几乎所有的cocoapod上出现的索引库。里面采用哈希分布,0-f 三层 共有161616个哈希索引,每个索引下有一系列的库

我们在/用户/fjzlsc/.cocoapods/repos/master/specs中搜索:MJRefresh
它的路径是0/f/b/的索引下面,通过搜索,我们还能搜索出别人在基础继续修改的库,如:


image.png

打开MJRefresh,我们可以看到MJRefresh下所有的版本号对应的文件夹


image.png
重点来了:这个以podspec.json 为结尾的文件,就是关键的索引文件

打开这个文件,我们可以看到:

{
  "name": "MJRefresh",
  "version": "3.1.2",
  "summary": "An easy way to use pull-to-refresh",
  "homepage": "https://github.com/CoderMJLee/MJRefresh",
  "license": "MIT",
  "authors": {
    "MJ Lee": "[email protected]"
  },
  "platforms": {
    "ios": "6.0"
  },
  "source": {
    "git": "https://github.com/CoderMJLee/MJRefresh.git",
    "tag": "3.1.2"
  },
  "source_files": "MJRefresh/**/*.{h,m}",
  "resources": "MJRefresh/MJRefresh.bundle",
  "requires_arc": true
}

我们要着重修改下面这部分

  "source": {
    "git": "https://github.com/CoderMJLee/MJRefresh.git",
    "tag": "3.1.2"
  },

我们将source改为自己的git代码https://xxxx.com/myCocoaPods/MJRefrsh.git

然后,我们也需要像cocoapod一样模拟一个索引库,但是这个索引库,我们没必要像Cocoapods一样建立哈希查找索引,只需要把自己工程需要的库放进去即可。

建立方法也很简单:
https://xxxx.com/myCocoaPods/mySpecs.git
里面我们只需要把刚才MJRefresh文件下所有文件(以podspec.json 为结尾的文件)和文件夹拷贝一下。然后使用脚本语言,把所有的source中的git地址修改一下。
这样,我可以把MJRefresh文件夹上传至远端仓库上https://xxxx.com/myCocoaPods/mySpecs.git,这样
我们在配置podfile时,只要在头部添加这句话
source 'https://xxxx.com/myCocoaPods/MySpecs.git'
或者是这样写
pod 'MJRefresh' ,'3.1.2' , :source => 'https://xxxx.com/myCocoaPods/MySpecs.git'

至此,我们在局域网或者受限网络环境下,使用cocoapods功能完全实现。

缺点:需要手动维持第三方库的更新。你都不能访问外网了,就只能手动升级了。

参考文章:Podfile语法参考

你可能感兴趣的:(2018-12-27如何在局域网使用cocopods)