【问题标题】:Xcode build step to verify if Cocoapods are up to dateXcode 构建步骤以验证 Cocoapods 是否是最新的
【发布时间】:2013-11-27 18:42:02
【问题描述】:

我有一个已经使用 Cocoapods 设置的 iOS 项目。我使用了一堆库,但有时我在不同分支之间添加/删除/更新库,却忘记在终端中运行 pod update 以确保我正在处理的分支拥有所有正确的 pod。

我正在尝试在我的项目(iOS 7、Xcode 5)中设置执行以下操作的构建步骤:

  1. 检查 Pod 当前是否是最新的,即确定是否需要运行 pod update
  2. 如果 Pod 是最新的,则什么也不做。
  3. 如果 Pod 不是最新的,请运行 pod update/pod install

我浏览了Cocoapods 网站上的文档,但找不到解决问题的方法。

任何指针表示赞赏!

干杯, 马里奥

【问题讨论】:

    标签: xcode cocoapods


    【解决方案1】:

    基于weissazool答案

    详情

    • Xcode 10
    • Cocoapods 1.6.1 测试版

    解决方案1.不缓存检查

    no_updates="No pod updates are available."
    need_to_update=1
    pod outdated | (while read i
        do
            if [ "$i" == "$no_updates" ]; then
            need_to_update=0   
        fi
    done
        if [ $need_to_update == 1 ]; then
            echo "warning: need to update pods";
        fi
    )
    

    解决方案 2. 每天只检查 1 次

    DIR="Temp"
    FILE="./$DIR/Pods.check"
    
    CURRENT_DATE=`date '+%Y-%m-%d'`
    
    checkPods () {
        NEED_TO_UPDATE_PODS=1
        NO_PODS_UPDATE_STRING="No pod updates are available."
        > $FILE
        pod outdated | (while read LINE
        do
            if [ "$LINE" = "$NO_PODS_UPDATE_STRING" ]
            then
                NEED_TO_UPDATE_PODS=0
            fi
        done
            echo "$CURRENT_DATE" >> $FILE
            if [ $NEED_TO_UPDATE_PODS = 1 ]
            then
                str="warning: need to update pods"
                echo "$str"
                echo "$str" >> $FILE
            fi
        )
    }
    
    mkdir -p $DIR
    
    if [ ! -f "$FILE" ]
    then
        checkPods
    else
        INDEX='0'
        cat $FILE | while read LINE
        do
    
        if [ $INDEX = 0 ] && [ $CURRENT_DATE != $LINE ]
        then
            checkPods
            break
        fi
    
        if [ $INDEX = 1 ]
        then
            echo "$LINE"
            break
        fi
    
        INDEX=`expr $INDEX + 1`
        done
    fi
    

    结果

    【讨论】:

      【解决方案2】:

      有几个 Xcode 插件可以让事情变得更简单,但我认为它们不会自动更新:

      使用 CocoaPods 的便捷 Xcode 插件:ManiacDev
      一个用于更轻松地使用 Cocoapods 和创建 Podfile 的 Xcode 5 插件:ManiacDev

      Xcode 的 CocoaPods:enter link description here

      【讨论】:

        【解决方案3】:

        在 Xcode 中,编辑您的构建方案 - cmd-option-r

        构建 -> 预操作

        添加New Run Script Action

        我想出了这个适合我的脚本 - 但我的 bash-fu 缺乏,所以其他人可能有更优雅的解决方案。

        pod outdated | while read i
        do
        flag=`echo $i | awk '{print match($0,"No updates")}'`;
        if [ $flag -gt 0 ]; then
            break;
        else
            pod update;
            break;      
        fi
        done
        

        另请注意,这依赖于pod outdated 的文本输出不变,因此随着 Cocoapods 的更新,它可能很脆弱。

        【讨论】:

          猜你喜欢
          • 2010-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-20
          相关资源
          最近更新 更多