美文网首页私有pod
iOS CocoaPods 私有pod操作流程

iOS CocoaPods 私有pod操作流程

作者: 王大妈啊 | 来源:发表于2019-12-19 16:54 被阅读0次
    pod repo

    如果已添加过pod repo 可以跳过

    • 从0开始

      在git服务端创建一个新的空仓库就好

    • 从已经创建好的仓库拉取

    添加pod repo

    pod repo add XXX自定义名字 XXX上面的仓库地址
    

    可以通过下面两种方式查看是否添加成功

    //方式1 到文件夹中查看
    cd ~/.cocoapods/repos
    //方式2 
    pod repo list
    
    新建pod
    • 从0开始
    pod lib create XXX自定义名字
    

    ​ 按照流程配置即可

    • 从已经创建好的远程仓库拉取

    在创建了Example工程的情况下,我们都是在Pods->Development Pods下添加我们的代码,且可以方便的在Example中调试使用。

    修改pod
    1. 添加代码文件

      1. 选择要添加的文件
      2. Add to targets 这里要选择当前的私有pod


        添加代码
      3. 添加成功后,如下图
    添加成功
    1. 添加资源文件

      资源文件的添加要主要:

      1. 添加图片这样的资源文件可以先添加到.xcassets文件中,这样在私有pod打包之后,iOS会根据机型选择合适的图片进行应用瘦身,打包成Bundle的资源文件读取方式要用下面的方式,不然读取不到。

        NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle bundleForClass:[self class]] pathForResource:@"XXXBundle" ofType:@"bundle"]];
        NSURL *url = [bundle URLForResource:soundTypeName withExtension:nil];
        

        有一点需要注意:

        XXXBundle是我们在下面第三步中podspec文件中填写的。

        [NSBundle bundleForClass:[self class]],当在类中写这个代码是没有问题的,但当是在category中读取时,[self class]只会获取添加category的类,这样就无法读到正确的bundle。

        解决办法:

        在当前库中建立一个新的空类,然后 [NSBundle bundleForClass:[Empty class]],这样便可以定位到当前库中。

      2. 添加非图片资源时可以先打成Bundle,也可以跟添加代码一样添加。

    2. 修改podspec文件

      podspec示例如下

      Pod::Spec.new do |s|
        s.name             = 'XXXUI'
        s.version          = '0.0.1'
        s.summary          = '这是一个什么组件'
        s.description      = <<-DESC
           比summary更详细的描述
                             DESC
        s.homepage         = 'git主页'
        s.license          = { :type => 'MIT', :file => 'LICENSE' }
        s.author           = { 'myname' => 'myemail@mail.com' }
        s.source           = { :git => '代码地址', :tag => "feature/V#{s.version.to_s}" }
      
        s.ios.deployment_target = '8.0'
      
        s.subspec 'ColorAndFont' do |ss|
            ss.source_files = 'XXXUI/ColorAndFont/*.{h,m}'
            ss.public_header_files = 'XXXUI/ColorAndFont/*.h'
        end
      
        s.subspec 'Button' do |ss|
            ss.source_files = 'XXXUI/Button/*.{h,m}'
            ss.public_header_files = 'XXXUI/Button/*.h'
            ss.dependency 'XXXUI/ColorAndFont'
        end
      
        s.resource_bundles = {
           'XXXUIBundle' => ['XXXUI/Assets/*.png']
        }
        
        # s.public_header_files = ''
        # s.frameworks = 'UIKit', 
        # s.dependency 'AFNetworking', '~> 2.3'
      end
      

      主要注意点:

      1. name 私有pod的名字
      2. version版本号
      3. homepage 项目主页
      4. author项目作者
      5. source项目地址,注意后面的tag写法,这里是读取了feature分支下的对应版本
      6. subspec添加下级目录,会按照设置的二级目录整理代码和资源文件
      7. resource_bundles资源文件,这样操作会把指定目录下的资源文件在编译之后打包成一个独立的Bundle,从而防止了跟主工程中资源文件命名冲突的可能性
      8. frameworks当前pod需要的系统库
      9. dependency当前pod需要的第三方库,当多个不同的私有pod使用同一个第三方库的不同版本时会产生冲突,如果有冲突建议协商修改为统一的版本
      10. 同一个私有pod中,如果按照subspec分成了子库(文件夹),如果相互之间需要引用,需要添加dependency,如上面的ss.dependency 'XXXUI/ColorAndFont',就代表着Button字库中需要依赖ColorAndFont字库
    1. 修改README文件

      这个文件的内容,会展示在项目主页,可以修改表示作者、使用注意事项等


      README
    验证pod
    1. Example工程添加

      pod添加好之后,进入pod的Example文件中,执行下面命令,会把pod安装到当前Example工程中,这里我们可以测试私有pod是否可以正常编译、使用

      pod install
      
    2. 本地验证

      进入到私有pod工程主目录


      目录

      执行命令,进行本地验证

      pod lib lint
      

      验证过程中如果有过多的警告导致验证不过,可以通过命令忽略警告

      pod lib lint --allow-warnings
      
    3. 远程验证

      pod spec lint 
      
    推送pod
    1. 推送私有pod代码

      验证通过的代码可推送到远端

    2. 推送podsepc到pod repo

      pod repo push XXXrepo XXXUI
      
    使用pod
    1. 在要使用私有pod的工程的Podfile中添加,引入私有pod repo的地址,同时为了正常使用cocoapods需要加入cocoapods地址

      platform :ios, '8.0'
      source 'http://xxxx.git'
      source 'https://cdn.cocoapods.org/'
      use_frameworks!
      
      pod 'XXXUI', '~> 0.0.1' 
      
    2. 安装pod

      pod install
      
    总结

    可能会用到的其他命令

    //查看pod repo
    pod repo list
    //查看pod是否可用
    pod search XXXUI
    //查看pod缓存
    pod cache list
    //清除缓存
    pod cache clean XXXUI
    //清除全部缓存
    pod cache clean —all 
    //不更新repo 快速安装、更新
    pod install --no-repo-update
    pod update --no-repo-update
    //更新repo 安装
    pod install --repo-update
    

    Podfle使用建议,建议使用pod ‘AFNetworking’, ‘~>0.1.2′

    pod ‘AFNetworking’ //不显式指定依赖库版本,表示每次都获取最新版本
    pod ‘AFNetworking’, ‘2.0’ //只使用2.0版本
    pod ‘AFNetworking’, ‘>2.0′ //使用高于2.0的版本
    pod ‘AFNetworking’, ‘>=2.0′ //使用大于或等于2.0的版本
    pod ‘AFNetworking’, ‘<2.0′ //使用小于2.0的版本
    pod ‘AFNetworking’, ‘<=2.0′ //使用小于或等于2.0的版本
    pod ‘AFNetworking’, ‘~>0.1.2′ //使用大于等于0.1.2但小于0.2的版本,相当于>=0.1.2并且<0.2.0
    pod ‘AFNetworking’, ‘~>0.1′ //使用大于等于0.1但小于1.0的版本
    pod ‘AFNetworking’, ‘~>0′ //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本
    

    相关文章

      网友评论

        本文标题:iOS CocoaPods 私有pod操作流程

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