【发布时间】:2017-11-09 04:14:19
【问题描述】:
当我从命令行使用xcodebuild archive 归档时,如何获取新创建的归档文件的路径?我想继续使用-exportArchive 命令来创建临时分发。
我知道我可以定义一个-archivePath,但是如果我这样做了,那么组织者就不知道这个档案在哪里,所以这不好。
想法?
【问题讨论】:
标签: ios xcode archive xcodebuild
当我从命令行使用xcodebuild archive 归档时,如何获取新创建的归档文件的路径?我想继续使用-exportArchive 命令来创建临时分发。
我知道我可以定义一个-archivePath,但是如果我这样做了,那么组织者就不知道这个档案在哪里,所以这不好。
想法?
【问题讨论】:
标签: ios xcode archive xcodebuild
假设你的机器上有一个标准的归档路径,我使用这个 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="<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 知道该存档在哪里的能力。这就是我遇到的问题。
archives 文件夹中。看起来 Xcode 会浏览整个档案文件夹,因此您不必依赖文件夹结构。 Xcode Preferences 甚至可以让你为你的档案定义一个自定义位置。我认为这就是我最终会做的事情......我只是讨厌摆脱默认策略,因为 Apple 可以随时改变他们的做法。