xcodebuild新创建的归档的归档路径

时间:2017-06-07 17:11:39

标签: ios xcode archive xcodebuild

当我使用xcodebuild archive从命令行进行存档时,如何获取新创建的存档的路径?我想继续使用-exportArchive命令创建一个adhoc发行版。

我知道我可以定义一个-archivePath,但是如果我这样做,那么Organizer不知道这个档案的位置,所以这没有用。

思想?

3 个答案:

答案 0 :(得分:4)

您只需创建一个包含要生成的存档路径的变量即可。然后在要导出时使用相同的路径

$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

希望这对你有所帮助!

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

假设您的计算机上有标准的存档路径,我将使用此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