新创建的存档文件的xcodebuild存档路径

11

当我使用xcodebuild archive命令行进行归档时,如何获取新创建的存档路径? 我想接着用-exportArchive命令来创建一个adhoc分发。

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

你有什么想法?

3个回答

16

你可以创建一个变量来保存要生成的归档文件的路径,然后在需要导出时使用相同的路径。

$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

希望这能在任何方面对你有所帮助!


2
谢谢您。我遇到的问题是,通过定义“-archivePath”参数,您会剥夺组织者知道这个存档位置的能力。这就是我遇到的问题。 - toofah
5
今天我在WWDC实验室与苹果工程师讨论了这个问题,但没有找到好的解决方法。他们建议像你上面建议的那样使用自己的路径,然后将归档文件复制到Xcode使用的“archives”文件夹中。看起来Xcode会浏览整个“archives”文件夹,所以你不必依赖于文件夹结构。Xcode首选项甚至允许您定义自定义位置以保存您的归档文件。我想我最终会采取这种方法……我只是不喜欢离开默认策略,因为苹果公司随时都可能更改他们的做法。 - toofah

1

有一个$ARCHIVE_PATH变量,仅在归档后操作脚本中可用enter image description here

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

使用$ARCHIVE_PRODUCTS_PATH代替。或者实际上,REAL_ARCHIVE_PATH=$(dirname ${ARCHIVE_PRODUCTS_PATH})


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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接