新建存档的 xcodebuild 存档路径

xcodebuild archive path of newly created archive

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

我知道我可以定义一个 -archivePath,但是如果我那样做,Organizer 就不知道这个存档在哪里,所以这不好。

想法?

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

$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

希望这对您有所帮助!

假设您的机器上有一个标准的存档路径,我使用这个 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

$ARCHIVE_PATH 变量仅在存档 post-actions 脚本中可用

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

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