美文网首页iOS开发小知识点iOS 伪组件专题
使用私有Cocoapods仓库 中高级用法

使用私有Cocoapods仓库 中高级用法

作者: DreamTracer | 来源:发表于2016-10-25 15:20 被阅读12947次

    上一篇文章《使用私有Cocoapods仓库》讲解了创建私有pod的初步教程,接下来我们提升一下难度。


    需求如下:

    1. 使用私有spec仓库
    2. 创建私有pods
    3. 私有pods依赖第三方静态库(.a , .framework)
    4. 私有pods依赖第三方pods
    5. 私有pods依赖另外的私有pods

    依赖关系如下:

    • NCKUIKit(私有pod)
      • SDWebImage(依赖的第三方pod)
      • BaiduMap.framework(手动引入的第三方framework)
      • NCKFoundation(依赖的私有pod)
        • AFNetworking(依赖的第三方pod)
        • libWechat.a(手动引入的第三方framework)

    Github上的仓库列表如下:

    • NCKSpecs
    • NCKUIKit
    • NCKFoundation

    为了方便读者的调试,此次的仓库都是基于github的。


    创建3个仓库

    1.创建/使用已有NCKSpecs仓库

    如果没有在github上新建一个仓库,
    如果有该仓库则直接在终端输入一下命令即可。

    pod repo add NCKSpecs https://github.com/NicolasKim/NCKSpecs.git
    

    以上命令会把github上的NCKSpecs仓库克隆到本地。执行一下命令查看本地的pods仓库:

    pod repo
    

    2.创建NCKFoundation仓库

    在github创建NCKFoundation仓库

    3.创建NCKUIKit仓库

    在github创建NCKUIKit仓库


    编写 NCKFoundation pods

    1. 创建NCKFoundation pods以及DEMO工程

    切换到需要的目录下执行一下命令:

    pod lib create NCKFoundation
    

    以上命令会在你指定的目录下,根据cocoapods的pods模板生成一个pods工程,包含pods以及demo工程,先不要着急打开工程。文件目录如下:


    在终端进入到Example目录下

    pod install
    

    这时会看到Example目录下会生成一个workspace文件

    双击打开工程,工程目录如下:

    把replaceme删除掉,Classes下新建一个类NCKRootObject
    编辑NCKFoundation.podspec文件,里面有一堆东西,先全部删除掉,并粘贴如下代码:

    Pod::Spec.new do |spec|
      spec.name             = 'NCKFoundation'
      spec.version          = '1.0'
      spec.summary          = 'Guide for private pods :'
      spec.description      = <<-DESC
                           Guide for private pods
                           DESC
      spec.homepage         = 'https://github.com/NicolasKim/'
      spec.license          = { :type => 'MIT', :file => 'LICENSE' }
      spec.author           = { 'NicolasKim' => 'jinqiucheng1006@live.cn' }
      spec.source           = { :git => 'https://github.com/NicolasKim/NCKFoundation.git', :tag => spec.version.to_s }
      spec.ios.deployment_target = '8.0'
      spec.source_files = 'NCKFoundation/Classes/*.{h,m}'
    
    end
    

    到podfile的目录下执行命令

    pod install
    

    他会根据spec文件,将NCKRootObject跟demo工程进行链接

    先做一下参数说明:

    spec可以看做是一个对象实例,有很多属性如下:

    name:顾名思义就是pod的名字,当我们使用pod search xxxx时,xxx就是name。

    version : pod 的版本 也就是我们再podfile里指定的那个版本。

    summary:概要说明

    description:pod的描述。

    source:远程仓库的地址以及tag版本

    ios.deployment_target:ios部署版本
    osx.deployment_target:osx部署版本

    source_files: 需要编译文件的文件目录,注意是文件目录而不是工程目录

    2.检查

    在上传到git仓库之前,做一下检查:
    在NCKViewcontroller中

    #import "NCKRootObject.h"
    

    不报错说明source_files指定的目录没有问题。

    接下来用pod的命令检查一下。

    后退到podspec文件存在的目录下,输入一下命令:

    pod lib lint
    

    如果因为有无关紧要的警告而未通过检查,则输入一下命令:

    pod lib lint --allow-warnings
    

    检查时pod会忽略警告。如果出现一下提示,你懂得,已经成功一大半了。

    NCKFoundation passed validation.
    

    接下来远程检查pods,这次cocoapods会根据podspec文件里的source 检查对应的仓库里有没有指定tag的仓库。显然我们还没有将NCKFoundation 上传到github的NCKFoundation仓库里,可定会报错,执行试一下。

    pod spec lint
    
    -> NCKFoundation (1.0)
        - WARN  | description: The description is shorter than the summary.
        - ERROR | [iOS] unknown: Encountered an unknown error ([!] /Applications/Xcode.app/Contents/Developer/usr/bin/git clone https://github.com/NicolasKim/NCKFoundation.git /var/folders/6x/8pyfnj_n4573cq4206yjz41c0000gn/T/d20161017-14130-148x77b --template= --single-branch --depth 1 --branch 1.0
    
    Cloning into '/var/folders/6x/8pyfnj_n4573cq4206yjz41c0000gn/T/d20161017-14130-148x77b'...
    fatal: Remote branch 1.0 not found in upstream origin
    ) during validation.
    
    Analyzed 1 podspec.
    
    [!] The spec did not pass validation, due to 1 error and 1 warning.
    

    根据错误得出,对应的仓库里没有1.0的分支。

    3.上传NCKFoundation

    那我们就将工程上传的github上,并创建1.0的tag。
    上传方式自行解决,网上有很多可视化工具,比如sourcetree。

    上传结束后再检查一下:

    pod spec lint --allow-warnings
    

    这次应该没有问题了吧?

    好,还没完,接下来我们把podspec文件上传的我们自己的spec仓库里,而不是cocoapods的仓库。

    pod repo push NCKSpecs NCKFoundation.podspec --allow-warnings
    

    cocoapods会把podspec文件上传到NCKSpecs仓库中。
    好现在去你的github看看spec仓库。

    4.使用私有pods

    新建一个工程,TestNCKFoundationPod
    终端进入该目录,新建Podfile。
    在第一行加入如下代码:

    source 'https://github.com/NicolasKim/NCKSpecs.git'
    

    意思就是当搜索或者下载pods的时候默认从NCKSpecs.git中获得信息。
    也就是说,我们从Cocoapods的spec仓库移到我们自有的spec仓库。之后就是正常的pods使用方法。

    target 'TestNCKFoundationPod' do
      pod 'NCKFoundation', '~> 1.0'
    end
    
    pod install
    

    试图引入NCKRootObject.h并运行测试工程。

    5. 添加afnetworking 和 微信的依赖

    先从微信开放平台下载微信sdk
    在NCKFoundation/NCKFoundation/Classes 目录下创建ThirdParty文件夹,并将.a和.h文件拖到ThirdParty文件夹下。(注意不要拖到工程目录下,而是文件目录)
    在podspec文件里修改source_file 为

    spec.source_files = 'NCKFoundation/Classes/*.{h,m}', 'NCKFoundation/Classes/ThirdParty/*.{h}'
    

    添加.a静态库的依赖,.a依赖的系统framework以及library

    spec.vendored_libraries  = 'NCKFoundation/Classes/ThirdParty/*.{a}'
    spec.frameworks = 'SystemConfiguration','CoreGraphics','CoreTelephony','Security','CoreLocation','JavaScriptCore'
    spec.libraries  = 'iconv','sqlite3','stdc++','z'
    

    参数说明

    vendored_libraries: 第三方.a文件

    frameworks: 该pod依赖的系统framework

    libraries: 该pod依赖的系统library

    添加AFNetworking的依赖

    spec.dependency   'AFNetworking', '~> 3.1.0'
    

    参数说明

    dependency : 该pod依赖的pod

    pod install
    

    之后看一下工程目录

    在Example里的NCKViewController里#import "WXApi.h"
    运行工程看看报不报错。

    6.制作subspec

    先说一下subspec是什么
    在终端搜索一下sdwebimage,结果如下

    也就是说我们再使用sdwebimage时不用下载全部的组件,喜欢用哪个就下哪个,由此得出subspec可以生成一个子模块儿,当然这需要我们再编码的过程中减少模块儿之间的依赖,使各个模块儿可以独立运行。

    好!接下来我们试着做一个子模块儿
    在工程目录下 新建文件夹NCKSub(并生成对应的文件目录) 新建一个类NCKChild,并在podspec文件里添加如下代码:

    spec.subspec 'NCKSub' do |cs|
           cs.source_files = 'NCKFoundation/Classes/NCKSub/*.{h,m}'
      end
    

    参数说明:

    NCKSub : subspec的名字 可以随意起名

    cs : 为变量名 与spec类似 拥有spec用的所有属性 可以随意起名

    执行

    pod install
    

    观察一下工程目录,并运行。还顺利吗?

    接下来我们准备升级pods的版本

    将podspec的version 改为2.0

    然后执行

    pod lib lint --allow-warnings
    

    将NCKFoudation push至远程仓库并新建2.0的tag
    将podspec push至私有的spec仓库中

    pod repo push NCKSpecs NCKFoundation.podspec --allow-warnings
    

    搜索一下

    pod search NCKFoundation
    

    结果如下:

    我们去TestNCKFoundationPod 这个工程中修改一下Podfile为

    source 'https://github.com/NicolasKim/NCKSpecs.git'
    source 'https://github.com/CocoaPods/Specs.git'
    target 'TestNCKFoundationPod' do
      pod 'NCKFoundation', '~> 2.0'
    end
    

    因为在私有的pod中依赖了另外的pod(afnetworking)afnetworking的spec文件是在cocoapods的仓库里 所以要添加一个cocoapods的spec仓库地址。

    pod install
    

    看一下工程目录:

    NCKFoundation pods制作完毕!


    编写 NCKUIKit pods

    新建NCKUIKit pods 步骤与NCKFoundation一样 进入指定目录
    直接在终端里输入

    pod lib create NCKUIKit
    

    到Example目录下pod install
    打开工程编辑podspec文件

    Pod::Spec.new do |spec|
      spec.name             = 'NCKUIKit'
      spec.version          = '1.0'
      spec.summary          = 'A short description of NCKUIKit.'
    
      spec.description      = <<-DESC
                           Add long description of the pod here.
                           DESC
    
      spec.homepage         = 'https://github.com/NicolasKim/NCKUIKit'
      spec.license          = { :type => 'MIT', :file => 'LICENSE' }
      spec.author           = { 'NicolasKim' => 'jinqiucheng1006@live.cn' }
      spec.source           = { :git => 'https://github.com/NicolasKim/NCKUIKit.git', :tag => spec.version.to_s }
      spec.ios.deployment_target = '8.0'
      spec.source_files = 'NCKUIKit/Classes/*.{h,m}'
      spec.dependency 'SDWebImage', '~> 3.8.2'
    end
    

    关联Baidumap.framework

    去百度地图官网下载framework
    目录如下

    将整个文件夹拖到Classes目录下

    然后编辑podspec如下

    Pod::Spec.new do |spec|
      spec.name             = 'NCKUIKit'
      spec.version          = '1.0'
      spec.summary          = 'A short description of NCKUIKit.'
    
      spec.description      = <<-DESC
                           Add long description of the pod here.
                           DESC
    
      spec.homepage         = 'https://github.com/NicolasKim/NCKUIKit'
      spec.license          = { :type => 'MIT', :file => 'LICENSE' }
      spec.author           = { 'NicolasKim' => 'jinqiucheng1006@live.cn' }
      spec.source           = { :git => 'https://github.com/NicolasKim/NCKUIKit.git', :tag => spec.version.to_s }
      spec.ios.deployment_target = '8.0'
      spec.source_files = 'NCKUIKit/Classes/*.{h,m,mm}'
      spec.dependency 'SDWebImage', '~> 3.8.2'
      spec.vendored_frameworks = ['NCKUIKit/Classes/BaiduMap_IOSSDK_v3.0.0_Lib/BaiduMapAPI_Base.framework',
                                  'NCKUIKit/Classes/BaiduMap_IOSSDK_v3.0.0_Lib/BaiduMapAPI_Location.framework',
                                  'NCKUIKit/Classes/BaiduMap_IOSSDK_v3.0.0_Lib/BaiduMapAPI_Map.framework',
                                  'NCKUIKit/Classes/BaiduMap_IOSSDK_v3.0.0_Lib/BaiduMapAPI_Search.framework',
                                  'NCKUIKit/Classes/BaiduMap_IOSSDK_v3.0.0_Lib/BaiduMapAPI_Utils.framework']
      spec.resource_bundles = {'Resources' => 'NCKUIKit/Classes/BaiduMap_IOSSDK_v3.0.0_Lib/BaiduMapAPI_Map.framework/Resources/mapapi.bundle'}
      spec.frameworks = 'CoreLocation','QuartzCore','OpenGLES','SystemConfiguration','CoreGraphics','Security','CoreTelephony'
      spec.libraries = 'sqlite3.0', 'stdc++.6.0.9'
    #spec.user_target_xcconfig =   {'OTHER_LDFLAGS' => ['-lObjC','-all_load']}
    
    end
    

    参数说明:

    vendored_frameworks: 第三方framework

    pod_target_xcconfig: build setting的配置

    关联私有pod NCKFoundation

    继续编辑podspec文件,如下:

    Pod::Spec.new do |spec|
      spec.name             = 'NCKUIKit'
      spec.version          = '1.0'
      spec.summary          = 'A short description of NCKUIKit.'
    
      spec.description      = <<-DESC
                           Add long description of the pod here.
                           DESC
    
      spec.homepage         = 'https://github.com/NicolasKim/NCKUIKit'
      spec.license          = { :type => 'MIT', :file => 'LICENSE' }
      spec.author           = { 'NicolasKim' => 'jinqiucheng1006@live.cn' }
      spec.source           = { :git => 'https://github.com/NicolasKim/NCKUIKit.git', :tag => spec.version.to_s }
      spec.ios.deployment_target = '8.0'
      spec.source_files = 'NCKUIKit/Classes/*.{h,m,mm}'
      spec.dependency 'SDWebImage', '~> 3.8.2'
      spec.vendored_frameworks = ['NCKUIKit/Classes/BaiduMap_IOSSDK_v3.0.0_Lib/BaiduMapAPI_Base.framework',
                                  'NCKUIKit/Classes/BaiduMap_IOSSDK_v3.0.0_Lib/BaiduMapAPI_Location.framework',
                                  'NCKUIKit/Classes/BaiduMap_IOSSDK_v3.0.0_Lib/BaiduMapAPI_Map.framework',
                                  'NCKUIKit/Classes/BaiduMap_IOSSDK_v3.0.0_Lib/BaiduMapAPI_Search.framework',
                                  'NCKUIKit/Classes/BaiduMap_IOSSDK_v3.0.0_Lib/BaiduMapAPI_Utils.framework']
      spec.resource_bundles = {'Resources' => 'NCKUIKit/Classes/BaiduMap_IOSSDK_v3.0.0_Lib/BaiduMapAPI_Map.framework/Resources/mapapi.bundle'}
      spec.frameworks = 'CoreLocation','QuartzCore','OpenGLES','SystemConfiguration','CoreGraphics','Security','CoreTelephony'
      spec.libraries = 'sqlite3.0', 'stdc++.6.0.9'
    #spec.user_target_xcconfig =   {'OTHER_LDFLAGS' => ['-lObjC','-all_load']}
      spec.dependency 'NCKFoundation'
    end
    

    podspec文件编辑完毕,先不要着急 pod install
    现在pod install 肯定找不到 NCKFoundation 所以我们需要在里Podfile一下 source
    编辑Podfile如下:

    use_frameworks!
    
    source 'https://github.com/NicolasKim/NCKSpecs.git'
    source 'https://github.com/CocoaPods/Specs.git'
    
    
    target 'NCKUIKit_Example' do
      pod 'NCKUIKit', :path => '../'
    
      target 'NCKUIKit_Tests' do
        inherit! :search_paths
    
        pod 'FBSnapshotTestCase'
      end
    end
    
    pod install
    

    这是会从私有仓库https://github.com/NicolasKim/NCKSpecs.git 下载NCKFoundation 并配置到工程。

    把NCKUIKit push到私有仓库里。(请自行解决)

    接下来检查一下podspec文件

    注意 : NCKUIKit的检查与NCKFoundation的检查稍微有点儿区别,因为NCKUIKit 依赖了NCKFoundation,同时NCKFoundation 是私有仓库里的pod ,所以我们检查是需要指定source。一个为cocoapods的source 另一个为私有spec仓库的source

    pod lib lint --sources=https://github.com/NicolasKim/NCKSpecs.git,https://github.com/CocoaPods/Specs.git --allow-warnings
    

    检查通过后直接把spec文件push到私有spec仓库里。

    注意:push时默认会检查 spec文件 所以同样需要提供source

    pod repo push NCKSpecs NCKUIKit.podspec --sources=https://github.com/NicolasKim/NCKSpecs.git,https://github.com/CocoaPods/Specs.git --allow-warnings
    

    将 TestNCKFoundationPod 的podfile改成如下:

    target 'TestNCKFoundationPod' do
      pod 'NCKUIKit'
    end
    
    pod install
    

    NCKFoundation pods制作完毕!

    感谢您的耐心观看,如果您觉得这篇文章有帮助,请您高台贵指点一下喜欢就可以了。

    相关文章

      网友评论

      • 806349745123:- ERROR | [iOS] file patterns: The `vendored_frameworks` pattern did not match any file.
        spec.vendored_frameworks = ['cocoapodsTest/Classes/Vender/TCWebCodes/TCWebCodesSDK.framework']

        请问这个问题怎么解决
        另外你的个人博客,评论模块好像不能用
      • 成长_路上:s.source_files = "../Common"
        这种格式的好像提示找不到文件
      • Link913:很赞
      • 大良造L:想请教下楼主, 私有pod库引用了另一个私有pod库某个framework的<xxx/xxx.h>文件。 这时候需要写<pod库名/xxx/xxx.h> 才能识别。如:本应该 #import <TencentOpenAPI/QQApiInterface.h> 却报找不到, 用 #import <当前Pod/TencentOpenAPI/TencentOAuth.h> 却可以。 请问是什么原因呢,有解决方案吗?
        seongbrave:您好,您的问题解决了吗?我知道是在cocoapods1.3之前的版本好像没有问题,在1.4,1.5上就会有您说的这个问题
      • 成长_路上:你好,
        引入.a文件制作库就报错
        ld: library not found for -ljcore-ios-1.2.0
        Ld /Users/liyoucheng/Library/Developer/Xcode/DerivedData/App-eqdbjcpiuafvlqfbazdnzpkhnkkj/Build/Intermediates.noindex/App.build/Release-iphonesimulator/App.build/Objects-normal/i386/App normal i386
      • 直持小崔:何为私有库 什么叫私有库 这样的 搞个git的网址作为源 别人不就看到了 那还叫私有吗 我觉得私有应该是像手机密码一样 需要输入密码的 但git私有又要钱 对吧 我觉得真正的私有是源这个都是私有的 比如git中国 放在真的私有的地方 最后做出来的才叫私有库吧 我的理解
        Remantou:公司内部搭个gitlab就可以了
      • 斑驳的流年无法释怀:大神你好,请问包含的静态库(.framework),外面报错竟然是这个frameworkwork里面的头文件无法找到内部的<XXX/XXX.h>,求解释
        斑驳的流年无法释怀:@seongbrave 如果是以静态库的方式导入的,主工程无法引用到.h文件,我最后把那个静态库单独做成了一个动态库,然后让需要这个库的库进行依赖可以解决这个问题
        seongbrave:您好,你的问题解决了吗?
      • shawn_shi:问一下,微信的sdk为什么不用dependency而是直接拖入的,包含.a文件的第三方库是不是不能用dependency
      • tsinghan:想请教一个问题 报错 “Source code for your Pod was not accessible to CocoaPods Trunk. Is it a private repo or behind a username/password on http?” 我按照网上的说法, 改用
        s.source = { :http => 'http://github.com/xxxx/xxxxx/archive/0.1.6.zip' } 这种写法,能找到这个source 但是总是报错 “ERROR | [iOS] file patterns: The `source_files` pattern did not match any file” 我反复对照了 source_files 这个目录 应该是没有问题的 有什么解决思路吗?
      • 張贺:我创建了一个私有库上传了cocoapods,我自己的电脑可以pod search 到,但我的同事电脑pod search不到。请问怎么让同事也可以使用这个私有库。谢谢
        張贺:@DreamTracer 感谢回复,已经解决了。貌似就是源的问题
        DreamTracer:@張贺 podfile里面设置源
      • 低吟浅唱1990:在依赖第三方库的时候 能不能
        s.dependency 'mob_sharesdk'、
        s.dependency 'mob_sharesdk/ShareSDKPlatforms/QQ'
        这种方式。 而不是先下载到本地Classes文件或子文件中
        shawn_shi:朋友,你这个问题解决了吗,我现在就是在私有库依赖极光sdk的时候.a文件依赖出错了
        DreamTracer:没有试过:joy:
      • 羊子222:麻烦问一下作者有没有依赖过环信的framework啊,我这里依赖了环信的framework过后pod的demo工程可以跑起来,就是验证的时候报错 - ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
        然后就提交不了:joy:
        羊子222:@_安然i 后来我们把环信的sdk下载下来过后,自己做了一个pod,把环信的sdk拖到pod里面去,然后依赖了自己的pod
        爱吃麦子的鱼:你好,请问你解决这个问题了吗,能告诉一下我这个问题是怎么解决的吗?
      • bf19831f34ee:你好 本地私有仓库
        # leewong @ LeeWong in ~/.cocoapods/repos/MyRepo/ArtNetWorkingModule on git:master o [20:03:09]
        $ ls
        1.0 1.0.1
        存在两个版本
        但是 在使用私有仓库的时候 pod 1.0.1 但是代码始终是1.0的
        pod update --no-repo-update
        使用这个命令仍然不可以获取到最新的代码 请问可能的原因是什么
        私有的pod库跟已经是最新 远程仓库也已经同步更新!
      • 2432acf0c9fd:您好,您的项目下载后在Example中使用WXApi报错:
        Undefined symbols for architecture x86_64:
        "_OBJC_CLASS_$_WXApi", referenced from:
        objc-class-ref in NCKViewController.o
        ld: symbol(s) not found for architecture x86_64
        clang: error: linker command failed with exit code 1 (use -v to see invocation)
        风中芯子:大神,您的这个问题解决了吗?
        2432acf0c9fd:在Example里的NCKViewController里#import "WXApi.h",不报错。
        在viewDidLoad里面调用[WXApi registerApp:@""];报错,用自己的静态库也会这样。
        2432acf0c9fd:是因为我cocoapods版本的问题吗 cocoapods版本 1.2.1.beta.1
      • 我的大名叫小爱:学习了 。。。还需要实践下。
      • 简书lu:QQ加不了啊~我想问一下当文件里面有xib怎么办,我写的里面有XIB然后会崩在contenView = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([LBChooseContentView class]) owner:nil options:nil] lastObject];这里
        DreamTracer:@简书lu 看一下bundle的用法吧
      • 着魔的毛豆:如何提高pod repo push的速度,每次提交都特别的慢,特别当私有库大了之后。
      • 温特儿:请教楼主个问题,怎么将资源文件copy到app内,而不是framework内?
        7b1f338f0c62:若制作的包里面引用到项目的一个公共类,该如何避免在pod lib lint --allow-warnings这一步时报- ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
        - ERROR | xcodebuild: ....这个错误?望大神指教
        温特儿:我知道,但是这个资源的路径不是在app下,而是在framework内部,引入3tdSDK的资源文件,这个时候就不能正常使用了。可能是我那块没配置正确,我的现在结果就是将资源文件放在了framework里面了,还望指教:pray:
        DreamTracer:@winterSeven cocoapods 应该自动会为你做这件事的 将framework里面的bundle拷贝到你的工程里
      • liyaoyao:你好,我在podspec 文件中添加系统的依赖库,但是校验的时候还是提示我类中找不到系统的某个头文件这是怎么回事,还有 我创建的子文件在本地有,但是没有显示到项目中,麻烦你指导下怎么弄 ,下面是我写的设置
        s.source_files = "JYDeviceManager/*.{h,m}", "JYDeviceManager/FMDeviceManager/*.{h}"
        s.frameworks = "CoreTelephony", "SystemConfiguration"
        s.libraries = "resolv" ,"z","c++"
        s.requires_arc = true
        s.vendored_libraries = "JYDeviceManager/FMDeviceManager/*.{a}"
        s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include" }
        s.subspec 'FMDeviceManager' do |ss|
        ss.source_files = "JYDeviceManager/FMDeviceManager/**/*"
        end
      • 骨古:谢谢楼主 有一个关于子模块的问题 组件里怎么显示多级文件夹(大于两级的)目前是定义了几个subspec 和source_files 但是只能显示两级 请问第三级怎么显示 比如(TestKit>>category>>nsstring)
      • 罗同学_:还有一个问题就是你的NCKUIKit里面如果包换.a静态库的话其他地方用NCKUIKit的时候pod install 好像应该就会直接过去不吧,我这边使用的一个错误就是这样
      • 罗同学_:请问下有demo吗
      • 黄花菜先生:请问,创建的spec,如何多人一起使用?
      • 58f0b442f46c:我想问下,比方说NCKFoundation这个库可以将其spec直接用git推送到https://github.com/NicolasKim/NCKSpecs.git中去,而不是用pod repo push的方式推上去嘛?
        58f0b442f46c:@DreamTracer 测试了下,结果是一样的,跟git的原理相同
        DreamTracer:@TomorJM 没有尝试过 但我觉得理论上是可以的 不过需要满足规定的目录结构 既然cocoapods提供了这个功能 为什么不用呢?:grin:
      • 58f0b442f46c:这篇文章真心不错
        DreamTracer:@TomorJM 哈哈 谢谢支持
      • 野狐大人:Ignoring bigdecimal-1.2.7 because its extensions are not built. Try: gem pristine bigdecimal --version 1.2.7
        /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- colored2 (LoadError)
        from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /Users/YWZ/Desktop/remoteLib/XMGFMBase/setup/TemplateConfigurator.rb:2:in `<top (required)>'
        from ./configure:5:in `require_relative'
        from ./configure:5:in `block in <main>'
        from ./configure:4:in `each'
        from ./configure:4:in `<main>'

        To learn more about the template see `https://github.com/CocoaPods/pod-template.git`.
        To learn more about creating a new pod, see `http://guides.cocoapods.org/making/making-a-cocoapod`.
        出现这种是什么意思啊
        DreamTracer:@WZYe 看样子是缺少bigdecimal 的gem 执行 'gem install bigdecimal' 试一下
        野狐大人:@DreamTracer pod lib create xx
        DreamTracer:做什么出现这个错误了?
      • 一抹相思泪成雨:你好!请教你个子模板的问题!!QQ1522144903 谢谢
      • d3442c7a660b:请教个问题,一个swift私有库,依赖了一个OC私有库,在spec lint的时候,出现bridge.h文件找不到OC私有库中framework的文件找不到的错误,该如何处理这个bridge.h文件?
        d3442c7a660b:@DreamTracer 谢谢回复,我先调研下,626939812,我的QQ,方便加一下吗,后续如果遇到其他问题,请教起来比较方便
        DreamTracer:@MyGarden 还没用这种方式写过 bridge文件会以什么样的形式 在buildsetting里被设置 我觉得这个切入点 你可以参考一下
      • 嘴爷:大神解开了我很多疑惑
      • 0cf8272a3cee:我用cocoapods开发SDK时,依赖AFN,为啥在Classes里面导入不了AFN呢?:pray:
        DreamTracer:@hulni 怎么进行的依赖啊 你得在podspec里配置dependency 之后就可以导入了
        0cf8272a3cee:@DreamTracer 是的,找不到afn!你加我扣扣呗416715288!:pray:
        DreamTracer:@hulni 找不到头文件吗?
      • 夜者无念:有qq不,碰上个恶心问题 使用pod spec lint --verbose 就停在 git down 很长时间不懂 让人绝望
        > Git download
        $ /Applications/Xcode.app/Contents/Developer/usr/bin/git clone
        https://code.csdn.net/xuzhongnangs/jsjhtuk.git
        /var/folders/dk/jdgvccwj5jq4vd0kmz9rd6hm0000gn/T/d20161027-21163-16aj5hj
        --template= --single-branch --depth 1 --branch 1.1
        Cloning into '/var/folders/dk/jdgvccwj5jq4vd0kmz9rd6hm0000gn/T/d20161027-21163-16aj5hj'...
        0cf8272a3cee:我用cocoapods开发SDK时,依赖AFN,为啥在Classes里面导入不了AFN呢?:pray:
        夜者无念:@DreamTracer 加你qq有姓名验证,要不你加我吧 574490169 :grin:
        DreamTracer:@夜者无念 315082025
      • Mitchell:请问一下,私有库依赖私有库的时候是否遇到过
        ```
        An unexpected version directory `Classes` was encountered for the
        ```
        这样的问题?
        大家都记得住的昵称:刚遇到,还在找解决办法。你们解决了吗?
        39Coding:我遇到过
        DreamTracer:好像没有遇到过 可以提供一下详细的错误信息吗?

      本文标题:使用私有Cocoapods仓库 中高级用法

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