美文网首页落魄的iOS开发
iOS组件化----- 创建私有组件库

iOS组件化----- 创建私有组件库

作者: jamace | 来源:发表于2020-08-31 17:44 被阅读0次

    一、远程私有索引库创建(远程仓库都是基于码云)

    1、创建远程私有索引库MyLib(和创建远程工程一样),复制仓库地址(点击克隆/下载)

    创建远程私有组件库.jpg

    2、打开终端,将远程私有库关联到本地

    cd /Users/jamace/.cocoapods/repos
    pod repo add MyLib https://gitee.com/jamace/MyLib.git
    

    https://gitee.com/jamace/MyLib.git是上面仓库MyLib点击克隆/下载按钮复制下来即可
    打开前往-前往文件夹-/Users/jamace/.cocoapods/repos会发现多了一个MyLib文件夹

    二、创建私有仓库(组件工程)

    1、在桌面创建文件夹MyDemo

    2、本地私有代码库

    # cd到MyDemo文件夹目录
    cd /Users/jamace/MyDemo
    # 这里的XJTestComponent是组件名称(自由创建)
    pod lib create XJTestComponent
    

    如果提示要输入码云账号,按照提示要求操作就行
    执行pod lib create XJTestComponent操作后稍等一会会出现一些组件工程的配置,按照以下配置即可

    What platform do you want to use?? [ iOS / macOS ]
    >iOS
    
    //开发语言设置,根据自己而定,这里为ObjC
    What language do you want to use?? [ Swift / ObjC ]
    >ObjC 
    
    //是否需要创建一个demo用来测试你的组件,这里选择Yes,是为了之后对写好的组件进行测试
    Would you like to include a demo application with your library? [ Yes / No ]
    >Yes 
    
    //测试框架
    Which testing frameworks will you use? [ Specta / Kiwi / None ]
    >None 
    
    //是否要做基础的视图测试
    Would you like to do view based testing? [ Yes / No ]
    >No 
    
    //文件前缀
    What is your class prefix?
    >XJ 
    

    3、创建完成过后,我们的工程会自动打开,创建完成后,工程的目录如下

    组件工程.jpg

    1、XJTestComponent.podspec这个是仓库配置文件;
    2、在finder打开XJTestComponentView并且复制这两个文件添加到/Users/jamace/Desktop/MyDemo/XJTestComponent/XJTestComponent/Classes/XJTestComponentView这个文件夹下;
    3、注意删除ReplaceMe.m文件,找到XJTestComponent下面的Classes文件夹,这里就是我们要放代码的地方,如图

    组件文件.jpg

    4、本地仓库建好了,前往码云创建远程仓库项目https://gitee.com创建项目XJTestComponent

    远程组件库.jpg

    5、创建成功后配置XJTestComponent项目的.podspec文件,文件位置如上图XJTestComponent.podspec,做以下修改

    配置文件修改.jpg

    0.1.0这个版本在后面更新组件的时候会更改,会跟tag一起更改

    6、更新本地组件代码到码云上

    cd /Users/jamace/MyDemo/XJTestComponent
    git remote add origin https://gitee.com/jamace/XJTestComponent.git #添加远程仓库
    git push -u origin master #第一次可能会报错可尝试用 git push -u origin master -f 可能会覆盖远程的修改
    git add . #记得后面一定要有 .
    git commit -m "创建测试组件"
    git push -u origin master
    git tag '0.1.0' #注意:这里的tag号必须和.podSpec文件的版本号一致
    git push --tags
    

    执行上面操作后前往码云就能看到代码已经提交到XJTestComponent仓库

    7、对文件进行本地验证和远程验证(在工程目录下)

    ->从本地验证你的pod能否通过验证
    pod lib lint --use-libraries --allow-warnings
    

    --verbose:有些非语法错误是不会给出错误原因的,这个时候可以使用--verbose来查看详细的验证过程来帮助定位错误。
    --use-libraries:表示使用静态库或者是framework,这里主要是解决当我们依赖一些framework库后校验提示找不到库的时候用到。
    --allow-warnings:表示允许警告。


    本地验证成功.jpg
    ->从本地和远程验证的pod能否通过验证
    pod spec lint --use-libraries --allow-warnings
    
    repos验证成功.jpg
    ->将spec 文件提交到本地的私有仓库,然后再push到远程仓库
    pod repo push MyLib XJTestComponent.podspec --use-libraries --allow-warnings 
    
    push到远程仓库.jpg
    ->此时打开/Users/jamace/.cocoapods/repos/MyLib,发现下面多出XJTestComponent文件
    MyLib目录下的组件版本.jpg
    ->查看远程私有索引库
    码云上的XJTestComponent索引库.jpg
    ->使用终端查看自己的私有组件
    pod search XJTestComponent
    

    如果提示
    [!] Unable to find a pod with name, author, summary, or description matching XJTestComponent
    没有找到的话可以删除search_index.json

    终端输入

    rm ~/Library/Caches/CocoaPods/search_index.json
    

    重新搜索

    pod search XJTestComponent
    

    三、如何在项目中使用组件库

    ->新建项目XJTestComponentDemo,cd到该项目目录下添加Podfile文件,其中的仓库远程地址指定去哪个资源去搜索资源
    cd /Users/jamace/Desktop/XJTestComponentDemo #项目目录
    vim Podfile #创建Podfile
    pod install #安装组件库
    
    在项目中导入组件库.png

    三、如何更新组件库

    1、我们在之前的XJTestComponentView目录下新增XJTestComponentView1目录并且添加新的代码

    待更新的代码.jpg

    2、更新代码到远程仓库

    ->修改XJTestComponent.podspec中的版本号0.1.1
    待更新的版本.jpg
    ->cd到组件库的位置
    cd /Users/jamace/MyDemo/XJTestComponent
    git add .
    git commit -m '新的更新描述'
    git pull  #在更新之前先拉下代码
    git push origin master #提交代码
    

    2、仓库版本更新

    git tag -a '0.1.1' -m '这里需要与上面XJTestComponent.podspec中修改的版本一致'
    git push --tags
    
    新添加的tag.jpg

    可以看到我们新的0.1.1的tag

    3、更新索引库

    ->验证本地仓库
    pod lib lint --use-libraries --allow-warnings
    
    ->验证本地仓库和远程仓库
    pod spec lint --use-libraries --allow-warnings
    
    ->将spec 文件提交到本地的私有仓库,然后再push到远程仓库
    pod repo push MyLib XJTestComponent.podspec --use-libraries --allow-warnings 
    

    执行这一步如果报错[!] The repo MyLib at ../../../.cocoapods/repos/MyLib is not clean,执行以下步骤

    pod repo remove MyLib    #移除本地私有库
    pod repo add MyLib https://gitee.com/jamace/MyLib.git      #在添加本地私有库
    pod repo push MyLib XJTestComponent.podspec --use-libraries --allow-warnings    #再执行推送
    
    更新索引库.jpg

    搜索看一下有没有我们新的0.1.1版本库

    pod search XJTestComponent
    

    如果报错[!] An unexpected version directory Classes was encountered for the /Users/jamace/.cocoapods/repos/gitee-jamace-xjtestcomponent/XJTestComponent Pod in the XJTestComponent repository.
    解决方法:去/Users/jamace/.cocoapods/repos删除gitee-jamace-xjtestcomponent这个目录在执行pod search XJTestComponent就好了

    新的组件库.jpg

    四、如何设置第三方库依赖

    XJTestComponent.podspec配置文件里默认s.dependency 'AFNetworking',这个就是设置组件库依赖AFNetworking
    如果我们只要求某个文件夹里的类依赖,而其他类不依赖,那就要如下设置子库:

    s.subspec '子库名称' do |别名|
    end
    
    部分依赖.jpg

    注意上面的deployment_target要设置成9.0,因为AFNetworking4.0只支持ios9.0+,这里设置的意思是XJTestComponentView这个文件夹里面的文件依赖AFNetworking,而XJTestComponentView1这个文件夹里的文件则不设置依赖。这样设置我们就可以分开安装了,比如在我们的新工程XJTestComponentDemo的Podfile中配置,这样就给我们分开安装需要的库了:


    子库安装.jpg

    至此,创建私有组件库的基本流程over~

    相关文章

      网友评论

        本文标题:iOS组件化----- 创建私有组件库

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