美文网首页good
iOS Development Pods

iOS Development Pods

作者: 今天写明天改 | 来源:发表于2022-02-09 13:41 被阅读0次

    背景

    说起pod很多同学都熟悉是cocoapod。平时(我)靠着install 和update蒙混度日。今天在接flutter的时候看到在别的项目结构里Pod目录下有一个Development Pods的文件夹:


    DevelopmentPods

    一番探索之后和大家分享一下这个知识

    整个的Pods就是CocoaPods把开发者提供给我们的源码拷贝了一次的地方。包含了我们podspec中所有引用到的文件
    一般我们在pod中放的都是诸如别人写好的稳定第三方库等。Podfile中使用方式如下

    target 'xxx' do
      pod 'SDWebImage', '3.7.5'
    

    那么考虑下我们自己有一个库。我们开发了一些新的内容,但是希望自己先测试一下再发布稳定的版本。这个时候我们可以选择获取我们当前库的git副本实现这个事情,例如:

    pod 'DTFoundation', :git=>'https://github.com/Cocoanetics/DTFoundation.git', :branch=>'develop'
    

    这样,当我们修改了一些东西的时候我们可以将改动推回GitBub。
    注意,如果我们用的是第一种方式。那么我们修改pod里的文件是没有意义的。因为修改的只是一份拷贝。
    修改成这样后我们运行下pod update 可以发现。我们的pod里的结构还是原先的结构。只不过文件变成了对应分支的文件。到此我们实现了既可以修改工程又可以修改Pod的目的。

    既然可以克隆远端的git仓库,有同学自然想到本地的仓库是不是也可以(实际上,git仓库并不一定要在远端) 如果想实现这个效果,我们可以用两步实现
    1.我们在Podfile中添加如下代码

    platform :ios, '8.0'  
    # Allows per-dev overrides 
    local_podfile = "Podfile.local" eval(File.open(local_podfile).read) if File.exist? local_podfile   
    # Core Dependencies 
    pod 'DTFoundation', :git => 'https://github.com/Cocoanetics/DTFoundation.git', :branch => 'develop'
    

    2.在PodFile.local中采用如下形式

    pod 'DTFoundation', :path=>'~/Documents/Projects/DTFoundation'
    

    这里我将所有的工程都放在了Projects下。所以如果你的目录不一样,需要做相应修改。
    为什么这个可以起作用。有两点原因

    1. Podfile 是 Ruby
    2. 一个Pod的第一个实例就是Pod会生效的那个实例(小技巧)

    之后pod update就可以看到我们的Pod下DTFoundation的依赖已经挪动到了Development Pods的文件夹。
    这时我们点击某个文件的引用,就不再指向Pods下的子文件夹了,而是指向我们本地的仓库目录。

    总结:Development Pods相当于把某个Pod放在了本地,方便我们随时修改和验证pod的功能。同时因为是直接的拷贝。所以我们修改完了就会直接将Pod仓库中的内容也修改了。

    相关文章

      网友评论

        本文标题:iOS Development Pods

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