【问题标题】:xcodebuild archive path of newly created archivexcodebuild 新创建存档的存档路径
【发布时间】:2017-11-09 04:14:19
【问题描述】:

当我从命令行使用xcodebuild archive 归档时,如何获取新创建的归档文件的路径?我想继续使用-exportArchive 命令来创建临时分发。

我知道我可以定义一个-archivePath,但是如果我这样做了,那么组织者就不知道这个档案在哪里,所以这不好。

想法?

【问题讨论】:

    标签: ios xcode archive xcodebuild


    【解决方案1】:

    $ARCHIVE_PATH 变量仅在存档后操作脚本中可用

    编辑: $ARCHIVE_PATH 返回一种不考虑日期、时间或重复后缀的通用路径。

    请改用$ARCHIVE_PRODUCTS_PATH。或者实际上是REAL_ARCHIVE_PATH=$(dirname ${ARCHIVE_PRODUCTS_PATH})

    【讨论】:

      【解决方案2】:

      假设你的机器上有一个标准的归档路径,我使用这个 python 代码来获取当前构建的归档路径。

      #!/usr/bin/env python
      # -*- coding: utf-8 -*-
      
      import os
      import datetime
      
      class Xcodebuild:
      
          @staticmethod
          def current_archive_path():
              # The default archives path is as follows
              #
              #    /Users/<USER>/Library/Developer/Xcode/Archives/<YYYY>-<MM>-<DD>
              #
              home = os.path.expanduser("~")
              archives_path = os.path.join(home, "Library/Developer/Xcode/Archives")
      
              if not os.path.isdir(archives_path):
                  exit("error: Xcode archives directory not found at {}".format(archives_path))
      
              dirname = str(datetime.date.today())
              archive_path = os.path.join(archives_path, dirname)
      
              if not os.path.exists(archive_path):
                  os.makedirs(archive_path)
      
              return archive_path
      
      

      【讨论】:

        【解决方案3】:

        您可以简单地创建一个变量来保存您要生成的存档的路径。然后要导出时使用相同的路径

        $ARCHIVE_PATH="<path_of_your_archive>" # can be something like "build/app_name.xcarchive"
        
        # ARCHIVING
        
        xcodebuild archive \
            -workspace "${APP_NAME}.xcworkspace" \
            -configuration $CONFIGUATION \
            -scheme $SCHEME \
            -archivePath $ARCHIVE_PATH
        
        # EXPORTING
        
        xcodebuild -exportArchive \
             -archivePath $ARCHIVE_PATH \
             -exportPath $OUTPUT_DIRECTORY \
             -exportOptionsPlist exportPlist.plist
        

        希望这对您有所帮助!

        【讨论】:

        • 谢谢。我在使用此解决方案时遇到的问题是,通过定义 -archivePath 参数,您将剥夺 Organizer 知道该存档在哪里的能力。这就是我遇到的问题。
        • 我今天确实在 WWDC 实验室与 Apple 工程师讨论过这个问题,但没有好的解决方案。他们建议按照您上面的建议使用我自己的路径,然后将存档复制到 Xcode 使用的 archives 文件夹中。看起来 Xcode 会浏览整个档案文件夹,因此您不必依赖文件夹结构。 Xcode Preferences 甚至可以让你为你的档案定义一个自定义位置。我认为这就是我最终会做的事情......我只是讨厌摆脱默认策略,因为 Apple 可以随时改变他们的做法。
        猜你喜欢
        • 1970-01-01
        • 2011-07-20
        • 2017-05-22
        • 2014-11-28
        • 2012-11-05
        • 2021-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多