由于项目年后要进行组件化,考虑到如果公司内部实现一些私有的组件,不对外公开,而又想在不同项目中使用,该怎么办呢?

使用Cocoapods制作私有库就完美的解决了这个问题。下图就是使用私有库带给我们的好处:

Cocoapods是如何实现查找第三方库呢?如下图:

从图中,可以看到通过.podspec可以找到我们想要的第三方库,那么.spec是什么呢?如下:

Pod::Spec.new do |s|

s.name         = "JSPatchtest"

s.version      = "0.0.1"

s.summary      = "yoowei 测试利用SVN创建私用库"

s.description  = <<-DESC

yoowei 测试利用SVN创建私用库

DESC

s.homepage     = "https://www.baidu.com"

s.license      = "MIT"

s.author             = { "yoowei" => "yoowei@126.com" }

s.platform     = :ios, "7.0"

s.source       = { :svn => "https://yoowei@yoowei.svn.net:443/svn/yoowei/ios/3.0/branches/JSPatchtest",:tag => "0.0.1"}

s.source_files  = 'yoowei/**/*'

end

至此,我们明白了查找到第三方库背后的原理。但是,具体如何进行搜索的呢?

先解释一个概念,什么是Spec Repo?它是所有的Pods的一个索引,也就是一个容器(集合),所有公开的Pods都在这个里面。实际上就是一个Git仓库remote端,当你使用了Cocoapods,这个仓库会被clone到本地的~/.cocoapods/repos目录下,进入到这个文件下可以看到master文件夹,就是官方的Spec Repo了。当你pod search的时候就在master这个文件下面查找的。

如何制作出属于自己的私有库?

但是问题来了,我们公司用的是SVN ,网上的资料介绍的绝大多数是基于git的 ,怎么办?

查找资料发现:

#

#  Specify the location from where the source should be retrieved.

#  Supports git, hg, bzr, svn and HTTP.

#

结果是明确的,支持SVN制作私有库,那么接下来就是不断的踩坑,终于成功了,记录下来备忘,如果能够帮到别人更好。

至于需要SVN账号密码,在接下来的步骤里面会有设计。

1、我利用JSPatch作为自己的私有库的组件,进项测试,建立如下的目录结构,并提前将JSPatchtest上传到我们SVN服务器

SVN上面的文件结构(如下)

2、把svn上面对应的JSPatchtest代码check out到本地,cd到JSPatchtest该目录下,使用pod命令创建一个podspec文件。

$ pod spec create JSPatchtest

具体终端操作如下:

$ cd /Users/galahad/Desktop/yoowei

$ svn co https://yoowei@yoowei.svn.net:443/svn/yoowei/ios/3.0/branches/JSPatchtest

A    JSPatchtest/yoowei

A    JSPatchtest/yoowei/JPEngine.h

A    JSPatchtest/yoowei/JSPatch.js

A    JSPatchtest/yoowei/JPEngine.m

Checked out revision 41541.

$ cd /Users/galahad/Desktop/yoowei/JSPatchtest

$ pod spec create JSPatchtest

Specification created at JSPatchtest.podspec

3、打开JSPatchtest.podspec文件,进行修改(不明白的可以先查资料了解)。然后将文件提交到SVN服务器

Pod::Spec.new do |s|

s.name         = "JSPatchtest"

s.version      = "0.0.1"

s.summary      = "yoowei 测试利用SVN创建私用库"

s.description  = <<-DESC

yoowei 测试利用SVN创建私用库

DESC

s.homepage     = "https://www.baidu.com"

s.license      = "MIT"

s.author             = { "yoowei" => "yoowei@126.com" }

s.platform     = :ios, "7.0"

s.source       = { :svn => "https://yoowei@yoowei.svn.net:443/svn/yoowei/ios/3.0/branches/JSPatchtest"}

s.source_files  = 'yoowei/**/*'

end

当我们用的svn时候,

s.source       = { :svn => "https://yoowei@yoowei.svn.net:443/svn/yoowei/ios/3.0/branches/JSPatchtest"}

细心的你应该发现默认的时候是有一个tags存在的,现在先删掉,后面会叙述。

s.source_files  = "yoowei", "yoowei/**/*"

4、使用

刚巧下载了一个LXMySelf的demo,就在这里面试一下

podfile文件描述如下:

target 'LXMySelf' do

pod 'AFNetworking'

pod 'Masonry'

pod 'UITableView+FDTemplateLayoutCell'

pod 'MJRefresh'

pod 'MJExtension'

pod 'MBProgressHUD'

pod 'SDWebImage'

pod 'YYCache'

pod 'SDCycleScrollView'

pod 'JSPatchtest', :svn => 'https://yoowei@yoowei.svn.net:443/svn/yoowei/ios/3.0/branches/JSPatchtest'

end

注意如果是首次的话,会让你输入SVN权限密码的。(由于刚操作了一遍了,密码已经输入过了)

$ cd /Users/galahad/Desktop/yoowei/LXSelfProject-master

$ pod install

Analyzing dependencies

Pre-downloading: `JSPatchtest` from `https://yoowei@yoowei.svn.net:443/svn/yoowei/ios/3.0/branches/JSPatchtest`

Downloading dependencies

Using AFNetworking (3.1.0)

Installing JSPatchtest 0.0.1 (was 0.0.1)

Using MBProgressHUD (1.0.0)

Using MJExtension (3.0.13)

Using MJRefresh (3.1.12)

Using Masonry (1.0.1)

Using SDCycleScrollView (1.65)

Using SDWebImage (3.8.1)

Using UITableView+FDTemplateLayoutCell (1.4)

Using YYCache (1.0.3)

Generating Pods project

Integrating client project

Sending stats

Pod installation complete! There are 10 dependencies from the Podfile and 10 total pods installed.

检查一下,安装成功。

5、补充tag设置

设置tag其实还是很简单的,我这里使用的是cornrstone管理svn代码。需要在JSPatchtest目录下新建一个tags文件夹,我采用的是本地创建好,然后上传到SVN。

SVN目录结构如下,选中yoowei文件夹右击 Tag ,填写tag和选择tags的位置,之后创建tags.

创建完tags之后的SVN目录结构。

6、再试

podfile文件描述如下:

target 'LXMySelf' do

pod 'AFNetworking'

pod 'Masonry'

pod 'UITableView+FDTemplateLayoutCell'

pod 'MJRefresh'

pod 'MJExtension'

pod 'MBProgressHUD'

pod 'SDWebImage'

pod 'YYCache'

pod 'SDCycleScrollView'

pod 'JSPatchtest', :svn => 'https://yoowei@yoowei.svn.net:443/svn/yoowei/ios/3.0/branches/JSPatchtest',:tag =>'0.0.1'

end

终端操作:

$ pod install

Analyzing dependencies

Pre-downloading: `JSPatchtest` from `https://yoowei@yoowei.svn.net:443/svn/yoowei/ios/3.0/branches/JSPatchtest`, tag `0.0.1`

Downloading dependencies

Using AFNetworking (3.1.0)

Installing JSPatchtest 0.0.1 (was 0.0.1)

Using MBProgressHUD (1.0.0)

Using MJExtension (3.0.13)

Using MJRefresh (3.1.12)

Using Masonry (1.0.1)

Using SDCycleScrollView (1.65)

Using SDWebImage (3.8.1)

Using UITableView+FDTemplateLayoutCell (1.4)

Using YYCache (1.0.3)

Generating Pods project

Integrating client project

Sending stats

Pod installation complete! There are 10 dependencies from the Podfile and 10 total pods installed.

检查安装成功

疑问1?

当tag版本未改变,修改了本地代码,pod install能否更新成功?

如果不能,是否需要将pod file文件中引用该库注释先删除,再添加执行两次pod install?大家可以尝试一下。

疑问2?

如果我们自己的组件里面,

s.dependency  ' AFNetworking', "~> 3.0.0"

应该在工程文件podfile地方需要先pod  AFNetworking。

如果有其他的问题的话,日后慢慢改正。

解决问题的过程中踩的坑:

svn服务器没有设置JSPatchtest的tags,项目podfile文件里面的来源写上了tag 引起的错误

$ pod install

Analyzing dependencies

Pre-downloading: `JSPatchtest` from `https://yoowei@yoowei.svn.net:443/svn/yoowei/ios/3.0/branches/JSPatchtest`, tag `0.0.1`



[!] Error installing JSPatchtest

[!] /usr/bin/svn export --non-interactive --trust-server-cert --force https://yoowei@yoowei.svn.net:443/svn/yoowei/ios/3.0/branches/JSPatchtest/tags/0.0.1 /var/folders/rg/gmjp61bx0x95t4tjx2hh_3sr0000gn/T/d20170106-35146-108d7q8



svn: E170000: URL 'https://yoowei@yoowei.svn.net:443/svn/yoowei/ios/3.0/branches/JSPatchtest/tags/0.0.1' doesn't exist

利用Cocoapods、SVN 创建私有库实现方案(yoowei)的更多相关文章

  1. 利用Cocoapods创建基于SVN的私有库podspec

    由于项目年后要进行组件化,考虑到公司内部实现的一些私有组件,不对外公开,而又想在不同项目中使用,该怎么办呢?由于cocoapods有了强大的功能,可以自己创建podspec,更可以设置私有的库.那么利 ...

  2. 在gitlab上面创建私有库

    一.创建私有库1.使用xcode建立新的工程,选择Cocoa Touch Static Library,取名为podTest   WechatIMG1172.jpeg 2.创建一个类PodTest,给 ...

  3. svn创建版本库和删除版本库

    作者:朱金灿 来源:http://blog.csdn.net/clever101 svn创建版本库的做法:使用cd命令进入版本仓库的根目录,我的是E:\Repository,然后运行命令: svnad ...

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

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

  5. win7系统svn创建版本库

    1. 在svn所在的服务器上, 找到它的目录, 右击创建项目名称文件夹, 然后右击该文件夹创建版本库 2. 创建版本库之后, 会出现几个文件夹, 打开conf文件夹,  修改里面的配置文件 3. 在自 ...

  6. linux下使用svn创建版本库和权限管理

    linux上的svn服务端如何和本地的电脑客户端结合使用 Linux上安装SVN服务器: 第一步:检查是否已安装 # rpm -qa subversion 第二步: 通过yum命令安装svnserve ...

  7. 利用cocoapods创建基于git的私有库

    上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...

  8. 利用cocoapods创建基于git的私有库Spec Repo

    上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...

  9. Cocoapods 创建自己的公开库、私有库

    如何创建自己的共有库 1.注册Trunk trunk需要CocoaPods 0.33版本以上,用pod --version 命令查看版本 CocoaPods版本 如果版本低,需要升级: sudo ge ...

随机推荐

  1. 由“Beeline连接HiveServer2后如何使用指定的队列(Yarn)运行Hive SQL语句”引发的一系列思考

    背景   我们使用的HiveServer2的版本为0.13.1-cdh5.3.2,目前的任务使用Hive SQL构建,分为两种类型:手动任务(临时分析需求).调度任务(常规分析需求),两者均通过我们的 ...

  2. Java-单机版的书店管理系统(练习设计模块和思想_系列汇总)

    介绍: 本软件系列到此,我已经全部写完了. 项目练习目标 : 1.Java应用程序基本分析 2.培养面向对象编程的基本思想 3.Java基本设计模式综合应用 4.掌握分层和接口的基本设计 5.构建合理 ...

  3. 局部更新 java web 的文件

    方法一:直接更新文件 直接修改部署后的文件.比如用 maven 打包成 WAR 文件,部署(复制)到 Tomcat/webapps 目录后,Tomcat 会立即将 WAR 文件解压成目录结构.此时,只 ...

  4. HDOJ 1010

    深度搜索,注意要剪枝 1.奇偶剪枝 可以把map看成这样: 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 从为 0 的格子走一 ...

  5. 建议别买三星Gear:半电脑产品 设计糟糕

    不久之前,三星刚刚发布了智能腕表Galaxy Gear,据<纽约时报>周三报道,尽管三星电子的智能手表Galax Gear集各种酷炫新功能于一身,但对消费者来说,却是个差劲的选择. < ...

  6. 中国四大资产管理公司 ACM

    一,来历和主要业务 国家于1999年成立了四家直属国务院的资产管理公司:中国东方资产管理公司.中国信达资产管理公司.中国华融资产管理公司.中国长城资产管理公司.由于资产公司一般是是为适应体制转轨或防范 ...

  7. Android Application对象必须掌握的七点

    1:Application是什么?           Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个 ap ...

  8. HDU 1199 - Color the Ball 离散化

    [题意]现在有几个球排成一排,编号从1开始,开始时所有球为黑色,现在有n(<=2000)次操作,每次操作将l[i]至r[i](均在int范围)的球凃成颜色c[i](黑色'b'或白色'w'),然后 ...

  9. 第2章 来点C#的感觉

    创建控制台项目 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  10. FastReport 动态修改连接字符串

    代码如下: Report rp = new Report(); rp.Load(@"Print\aa.frx"); rp.Dictionary.Connections[0].Con ...