美文网首页
Pod spec私有库集成遇到的错误(一)

Pod spec私有库集成遇到的错误(一)

作者: 东方诗空 | 来源:发表于2021-04-26 21:22 被阅读0次

    最近集成私有库组件话,结果真是一步一个坑。

    主要遇到的坑:

    一、首先没有使用pod lib create 来创建私有库管理

    单独创建工程,接着pod sepc create 创建x x x.podspec 。这样创建的后还需要关联,结果一堆错误,而且还很麻烦。
    最后使用pod lib create x x x来创建私有库管理

    pod lib create x x x
    
    # 你想使用哪个平台?
    1、What platform do you want to use?? [ iOS / macOS ]
    iOS
    # 库语言选择?
    2、What language do you want to use?? [ Swift / ObjC ]
    ObjC
    # 你要使用哪个测试框架?
    3、Which testing frameworks will you use? [ Specta / Kiwi / None ]
    None
    # 是否要UI测试?
    4、Would you like to do view based testing? [ Yes / No ]
    NO
    # 类名前缀?
    5、What is your class prefix?
    WB
    

    二、创建两个私有库地址

    1、一个是私有工程库的地址,一个是存放x x x.podspec索引的索引库地址。

    三、添加本地pod索引

    pod repo add WheatearSpecs + 索引的索引库地址
    

    创建完成后在 ~/.cocoapods/repos中查看,会有一个WheatearSpecs文件夹存在表示 添加本地索引成功。

    四、修改x x x.podspec

    这个文件的修改,没什么可说的,自行学习。主要说一下文件修改完成后在验证阶段遇到的坑。
    podspec书写规范文档

    name:私有库包名,s.name = 'LCJPUtils'

    version:当前版本号,s.version = '1.0.1'

    platform:最低支持系统,s.platform = :ios, '8.0'

    source:git地址、版本号,s.source = { :git => 'git地址', :tag => '1.0.1'}

    source_files:具体类库路劲,s.source_files = 'LCJPUtils/LCJPUtils/*'

    libraries:系统libs,s.libraries = 'sqlite3','stdc++'

    vendored_libraries:内置libs路径,s.vendored_libraries = 'LCJPUtils/utils.a'

    frameworks:系统frameworks,s.frameworks = = 'UIKit','Foundation'

    vendored_frameworks:内置frameworks路径,s.vendored_frameworks = 'LCJPUtils/utils.framework'

    requires_arc:是否为arc,s.requires_arc = true

    dependency:关联第三方库、私有库,s.dependency 'AFNetworking' s.dependency 'LCNetwork', '~> 1.0.1'

    resource: 资源文件地址,s.resource = 'LCJPUtils/LCJPUtils/resource.bundle'

    public_header_files:私有库公共头文件,s.public_header_files = 'LCJPUtils/LCJPUtils/UtilsHeader.h'

    valid_archs:支持的处理器,valid_archs = ['armv7s','arm64','x86_64','armv7','arm64e']

    pod_target_xcconfig:当前库的Build Settings,s.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '-lObjC' }

    user_target_xcconfig:project中的Build Settings,s.user_target_xcconfig = { 'OTHER_LDFLAGS' => '-lObjC' }

    4.1本地验证。

    cd 对应的文件x x x.podspec目录下

    执行命令,本地验证。

    pod lib lint x x x.podspec 
    

    出现 x x x.podspec passed validation. 表示本地验证成功。
    这里失败的主要原因是路径问题。

    [iOS] file patterns: The `source_files` pattern did not match any file.
    

    总结一下有几种:

     x x x/Classes/**/*
     ***/Classes/**/*
    

    参考解决方法https://stackoverflow.com/questions/43073261/error-ios-file-patterns-the-source-files-pattern-did-not-match-any-file

    4.1远端验证

    本地通过后,还要进行远端的验证才能关联上传。

    pod spec lint  :pod远程库验证
    

    遇到一个坑是,远端还没有对应的版本和代码。所以结下来需要处理本地的代码。

    git 提交对应的私有仓库代码到远端,并打上对应的tag,注意tag需要和x x x.podspec的版本号一致。
    把tag推送到远端仓库。

    再次远端验证。

    pod repo push WheatearSpecs x x x.podspec --allow-warnings
    

    遇到错误

    [!] /usr/bin/git -C /Users/jiangweidong/.cocoapods/repos/WheatearSpecs pull
    
    Your configuration specifies to merge with the ref 'refs/heads/master'
    from the remote, but no such ref was fetched.
    

    对于这个错误,可是折腾了我好一会。
    先上参考文献https://stackoverflow.com/questions/43073261/error-ios-file-patterns-the-source-files-pattern-did-not-match-any-file
    https://blog.csdn.net/andanlan/article/details/50515434?utm_source=blogxgwz8
    https://stackoverflow.com/questions/65448393/your-configuration-specifies-to-merge-with-the-ref-refs-heads-master-from-the

    最后检查是远端specs为空所致,添加不为空就可以了。

    4.2发布

    执行下面

    pod repo push 索引库名 podspec文件名:命令执行会先将pod索引添加到本地的索引库,然后会自动推送到远程的索引库
    

    按理来说到这里应该就没问题了,但是意外出现了。
    一直报错

    [!] /usr/bin/git -C /Users/jiangweidong/.cocoapods/repos/WheatearSpecs pull
    
    GitLab: The project you were looking for could not be found.
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    

    有没有发现和上面一样的,对就是那个解决方法。

    经过一番折腾,终于出现了

    
    Updating the `WheatearSpecs' repo
    
    
    Adding the spec to the `WheatearSpecs' repo
    
     - [Update] XXX (0.1.5)
    
    Pushing the `WheatearSpecs' repo
    
    jiangweidong@localhost HYBasicToolKit % 
    

    惊喜不断意外不断。
    检查发现,本地WheatearSpecs 已经更新了 spesc文件,但是队友的远端索引仓库没有提交上去。
    百思不得其解。折腾了号一会,最后命令行里面加了几个参数解决问题。

    pod repo push WheatearSpecs XXX.podspec --allow-warnings --sources=索引仓库地址 --use-json
    

    问题虽然解决了,但是我还是没有找到上面问题的根本原因,有哪位小伙伴理解的,或者遇到过的,欢迎交流,评论留言。

    五、搜索对应的库

    pod search XXX
    

    六、pod使用

    source '索引库地址'
    
    target 'm m m' do
    
    pod 'XXX'
    
    end
    
    

    七、相关命令

    在本地和远端验证中可以根据提示后面加对应的参数

    --allow-warnings                       Allows pushing even if there are warnings
        --use-libraries                        Linter uses static libraries to install the
                                               spec
        --use-modular-headers                  Lint uses modular headers during
                                               installation
        --sources=https://cdn.cocoapods.org/   The sources from which to pull dependent
                                               pods (defaults to all available repos).
                                               Multiple sources must be comma-delimited
        --local-only                           Does not perform the step of pushing REPO
                                               to its remote
        --no-private                           Lint includes checks that apply only to
                                               public repos
        --skip-import-validation               Lint skips validating that the pod can be
                                               imported
        --skip-tests                           Lint skips building and running tests
                                               during validation
        --commit-message="Fix bug in pod"      Add custom commit message. Opens default
                                               editor if no commit message is specified
        --use-json                             Convert the podspec to JSON before pushing
                                               it to the repo
        --swift-version=VERSION                The `SWIFT_VERSION` that should be used
                                               when linting the spec. This takes
                                               precedence over the Swift versions
                                               specified by the spec or a `.swift-version`
                                               file
        --no-overwrite                         Disallow pushing that would overwrite an
                                               existing spec
        --allow-root                           Allows CocoaPods to run as root
        --silent                               Show nothing
        --verbose                              Show more debugging information
        --no-ansi                              Show output without ANSI codes
        --help                                 Show help banner of specified command
    

    常用命令

    pod spec create XTProtocolManager//生成pod库配置文件
    pod init//生成Podfile
    pod lib lint//验证lib
    pod repo push [repo] [podspec] 
    pod repo push [repo] [podspec]  --verbose --allow-warnings
    
    pod repo add NAME URL[branch]:添加自己的pod仓库
    pod lib create [仓库名]:在本地创建一个基于pod模板的git仓库
    pod lib lint:pod本地库验证
    pod spec lint:pod远程库验证
    pod repo push 索引库名 podspec文件名:命令执行会先将pod索引添加到本地的索引库,然后会自动推送到远程的索引库
    
    git init//初始化
    git status//查看状态
    git add .//添加文件到缓冲区
    git commit -m "描述"//从缓冲区提交代码到仓库
    git tag -a '0.0.1'  -m '描述'//添加tag
    git tag //查看tag
    git tag -d '0.0.1'//删除tag
    git remote add origin https://github.com/xxx.git//关联本地仓库和远程仓库。
    git push -f origin master//将本地库的代码推到远程库
    git push --tags//将本地创建的tag推到远程库
    git push origin :0.0.1//删除tag
    

    首次上传git时需要的命令

    git add .
    git commit -m "first commit"
    git remote add origin  远程代码库地址
    git push -u origin master
    
    git pull origin master
    git pull origin master --allow-unrelated-histories
    
    
    

    相关文章

      网友评论

          本文标题:Pod spec私有库集成遇到的错误(一)

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