iOS组件化开发2 · 组件开发必备知识

作者: Biharry | 来源:发表于2016-11-24 00:18 被阅读6978次

    iOS组件化开发1 · 什么是组件化

    组件化开发2 · 组件开发必备技能

    这篇文章的主要内容list
    1、学会使用git
    2、作为使用者开发者怎样使用 CocoaPods
    3、学会创建远程私有的CocoaPods库

    一、git的使用

    git最基本要理解并会使用下面的命令

    基本操作
    git init # 创建git
    git status #查看状态
    git add . # 放到暂存区
    git commit -m '提交信息' # 提交
    ----
    标签
    git tag -a '1.1.1' -m '标签描述' # 创建标签
    git push --tags # 推送全部标签
    git tag -d 1.0.0 (删除本地标签)
    ---
    远程操作
    git clone gitURL
    git remote add origin gitURL
    git push origin master
    git push origin :1.0.0 (有冒号就表示删除远程1.0.0标签)
    

    如果你不明白或者是没有用过上面的命令,请移步到这里看更详细的git教程
    git详细教程

    二、CocoaPods的使用

    如果不了解CocoaPods的安装和简单使用,教程请移步这里 ---> CocoaPods安装教程

    • CocoaPods是什么
      CocoaPods 是用来管理xcode项目的第三方框架的工具

    • CocoaPods的机制(很有必要了解)
      它的工作机制是通过pod search 框架名称 在索引库里进行检索,并得到要搜索框架的一个描述文件(.podspec文件)。利用该描述信息中包含的关于框架的版本信息,下载地址,依赖库等信息来下载和管理三方库

    • **让自己的开源程序支持 CocoaPods **
      通过对CocoaPods的工作机制的了解,如果想让自己框架支持 CocoaPods 的集成方法,就要为自己的框架创建描述文件,并把描述文件提交到索引库,这样别人就可以通过CocoaPods 使用自己开发的框架了。

    所以说白了,让自己的的框架支持 pod ,就是为自己的框架创建一个描述文件,并同步到索引库

    那···
    如果不想让别人用,只想在公司内部使用呢??
    别着急,慢慢往下看
    ···

    pod--使用者

    首先我们大致了解一些pod的简单使用

    1、打开终端,进入项目目录
    2、在终端pod init方法创建 podfile 文件( 建议不要在终端用touch podfile 方式创建 )
    3、用xcode修改podfile文件

    # Uncomment the next line to define a global platform for your project
    platform :ios, '9.0' # 最低支持的版本
    target 'test-1-2' do # 选择制定的target
    use_frameworks! # 使用framework形式导入,swift要使用这个
    pod 'SDWebImage'
    end
    

    4、pod install 安装 pod 所要导入的文件

    需要注意的是:
    在比较低版本的 pod ,当进行 pod install 的时候。会默认先收就行 Updating local specs repositories(更新本地pod检索库)


    这里稍微细化一下pod的搜索机制
    1、当使用pod search 命令的时候,pod会在pod本地索引库中检索你要寻找的框架。
    2、而本地的索引库是从github的pod索引库down来的。所以每次在使用pod install的时候,会从远程更新本地的索引库,这样才能保证本地索引库是最新的,检索到需要的框架
    3、在pod install 可以通过后面这个命令代替,来禁止更新本地索引库 pod install --verbose --no-repo-update

    5、到此,就可以在项目中欢乐的使用添加的框架了


    作为使用者,pod为我们管理框架提供了很大的便利,很轻松的管理框架的更新和集成。作为开发者,让我们开发的框架支持pod,是不是也是很利国利民的一件大事呢?

    pod--开发者

    Hi,The Coder,让自己的库支持CocoaPods,OK?

    远程共有/开源

    自己的框架如果计划开源。默认的情况下,是把描述文件提交到git的cocoapods的索引库。这样其他人就可以通过pod集成你的开源框架了

    步骤
    1、本地编码,写好你的开源框架
    2、代码上传到github的公开仓库里
    3、git打标签,并将标签push到远程

    git tag -a '0.1.0' -m '0.0.1' # 添加一个标签
    git push --tags # 推送所有标签到远程
    

    本地的编码完成。就需要创建 pod 必须的描述文件

    4、在框架所在文件夹中,生成 podspec 描述文件

    pod spec create 描述文件名字,建议和项目名字一样
    

    5、简单修改描述文件参数(复杂的后面结合案例讲解)
    用xcode打开上面创建的文件

    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
    
    具体的修改例子,可以参考AFN的podspec文件
    

    6、修改好以后,验证spec文件是否修改正确

    $ pod lib lint
    
    这里一定要验证通过,验证过程中如果有报错或者警告,应该按照提示的信息进行修正
    

    7、注册trunk,并通过trunk提交spec到git的cocapod索引库

    # 注册trunk账号
    pod trunk register Email UserName 
    # 注册后,去填写的Email中验证一下,就完成了注册
    
    # 提交到git的CocoaPods仓库
    pod trunk push
    # 这个操作会把本地的spec田提交到git仓库
    

    到此,自己的开源框架就提交到pod远程的索引库了。尝试一下利用pod添加自己的框架


    私有框架

    组件化开发的要求我们,自己的功能组件只能本公司使用,所以不能都进行开源的设置。既然这样,就要求我们对自己的框架进行私有化处理

    进行私有处理,就不能再把自己的框架提交到git的CocoaPods索引库了。所以我们就要建立属于我们自己的私有库,包括私有本地库私有远程库

    私有本地库索引库
    上面说道,pod的工作机制是把git的cocoapods索引库拷贝到本地,进行检索的。

    git的CocoaPods的索引库克隆到本地,默认的名字为master
    为了完成框架私有化,我们需要创建另外一个本地的索引库,用来当做自己的私有本地库

    私有远程库索引库
    需要在远程建立自己私有CocoaPods索引库,创建方式和git代码库一样。
    创建好远程私有库,就要和本地的私有库进行关联。关联以后本地的私有索引库有更新,远程的就会自动更新


    操练1 、 指定路径使用pod,不需要索引库

    1、编写框架
    2、在框架目录 生成并修改 podspec 描述文件

    pod spec create 描述文件名字,建议和项目名字一样
    

    本地框架修改描述文件,只要对主要参数修改一下就可以,

    s.soure = "" // 因为是本地使用,置空就可以 
    s.souce_files = "" // 关键代码的相对路径 
    

    因为验证文件是根据远程使用的标准进行验证的。所以本地的可以不验证

    3、在需要使用框架的目录,创建pod文件,并且修改pod文件

    podfile的内容添加框架的时候,要指明spec描述文件所在的路径

     platform :ios, '8.0'
    
    target 'TargetName' do
    use_frameworks!
    pod 'MyLibName', :path => '../MyLibName
    '
    end
    

    4、 pod install 正常使用

    本地路径方法的缺点
    1、不能团队共享
    2、存放代码的路径不能修改,修改就不能使用


    操练2 、远程“私有”库使用CocoaPods

    远程私有库,支持多个CocoaPods库的检索和使用。为了能够使CocoaPods能够检索,就需要本地的索引库进行支持。
    我们创建本地索引库的方式,是首先创建远程私有的索引库,然后克隆到本地,生成本地的索引库

    1、在远程github创建私有库(收费的) 或者 在git.coding 创建私有库(免费的)

    远程私有索引库,其实和git的代码库是一样的,只不过这个仓库单独用来CocoaPods索引使用

    2、通过URL,把远程的私有索引库克隆到本地。这样本地就有了CocoaPods的索引库

    # 通过连接创建本地索引库
    pod repo add 本地索引库名字 git地址
    
    # 查询本地所有索引库,就会看到上面命名的索引库
    pod repo
    

    这样一来,就创建了远程私有索引库 和 本地索引库,并且存在关联

    3、在git.coding 再创建一个代码仓库,进行框架代码的管理(是代码文件的管理,不是索引的管理)。在本地写框架代码,并上传到远程私有代码仓库不能使用上面的索引库),添加标签,并推送到远程代码库;

    4、创建spec,修改,并验证

    5、把spce先push到本地的索引库,

    pod repo push 本地私有库名字 spec文件
    

    6、本地私有索引库在push到远程的索引库,这一步是索引库自动完成

    7、接下来我们测试一下 pod install。会发现,并不能找到我们的框架。
    这是因为。如果在podfile文件里面,不写任何索引库的路径,默认的只是在git的 pod 索引库进行检索。自然是找不到我们的私有库了
    所以我们要在pod文件中提供索引库路径。这样就可以检索到我们的私有框架了

    source 'git@git.coding.net:xxx/xxx.git'
    source 'https://github.com/CocoaPods/Specs.git'  #官方仓库的地址
    
    添加在 Podfile的最上面就可以了
    

    三、总结

    这篇文章中,主要讲解了CocoaPods的深入使用

    0、让自己的框架支持pod导入,创建描述文件,利用trunk提交到git索引库
    1、本地路径使用pod导入框架,通过spec描述文件所在路径进行pod导入
    2、远程私有的pod索引库,创建远程私有索引库,和本地私有索引库。

    相关文章

      网友评论

      • 谢谢生活:谢谢作者,这是工具的使用,能讲讲代码层面的东西吗? 谢谢
        Biharry:谢谢支持,等工作不忙了吧

      本文标题:iOS组件化开发2 · 组件开发必备知识

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