通过命令行Xcode“构建和存档”


392

Xcode 3.2在“生成”菜单的“生成和存档”下提供了一个很棒的新功能,该功能生成一个适合Ad Hoc分发的.ipa文件。您也可以打开管理器,转到“存档的应用程序”,然后“将应用程序提交到iTunesConnect”。

有没有一种方法可以从命令行使用“构建和存档”(作为构建脚本的一部分)?我以为xcodebuild会以某种方式参与其中,但是该man页面似乎没有对此发表任何评论。

更新 Michael Grinich要求澄清;这就是您完全无法使用命令行构建的功能,这些功能只有在“构建并存档”之后才能使用Xcode的Organizer进行。

  1. 您可以单击“共享应用程序...”与Beta测试人员共享IPA。正如Guillaume在下面指出的那样,由于一些Xcode的神奇之处,此IPA文件不需要Beta测试人员需要安装的单独分发的.mobileprovision文件。太神奇了。没有命令行脚本可以做到这一点。例如,Arrix的脚本(5月1日提交)不符合该要求。
  2. 更重要的是,在对Beta版本进行Beta测试之后,可以单击“将应用程序提交到iTunes Connect”以将完全相同的版本提交给Apple(您测试过的二进制文件),而无需重新构建。在命令行中这是不可能的,因为对应用程序进行签名是构建过程的一部分。您可以签名进行Ad hoc beta测试,也可以签名以提交到App Store,但不能两者都签名。无法在手机上对基于命令行的IPA进行Beta测试,然后直接提交给Apple。

我希望有人能证明我做错了:这两个功能在Xcode GUI中都很好用,并且不能从命令行复制。


1
糟糕 这似乎是不可能的。如果您不知道答案,请至少投票表决该问题,以免我的赏金不会消失在以太里... :-(
Dan Fabulich

3
这并非不可能,这不是的一部分xcodebuild。创建IPA文件仅涉及将应用程序放入名为“ Payload”的目录中,将该目录压缩,然后将其重命名为MyAppName.ipa。
Michael Grinich 2010年

@Michael,“构建和存档”还启用了管理器功能,当您仅手工制作IPA文件时,这些功能将不可用。
Dan Fabulich

我的评论过长,因此已发布为答案
Michael Grinich

3
尽管vdaubry的第一个/可接受的答案会起作用,但是对于较新版本的Xcode,Reid的答案要简单得多。
Prometheus

Answers:


314

我发现了如何从comand行自动进行构建和归档过程,我刚刚写了一篇博客文章,解释了如何实现这一目标。

您必须使用的命令是 xcrun

/usr/bin/xcrun -sdk iphoneos PackageApplication \
-v "${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app" \
-o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" \
--sign "${DEVELOPER_NAME}" \
--embed "${PROVISONING_PROFILE}"

您将在文章中找到所有详细信息。如果您有任何疑问,请随时提出。


19
在一段时间内对我来说并不明显,但RELEASE_BUILDDIR必须是一条绝对的道路。
David Dunham

5
另请注意,如果您希望保留.app生成时使用的相同签名/配置文件,则不需要--sign或--embed选项。这将是您在“发布”配置的“代码签名”构建设置中设置的任何内容。
Mike Weller

12
请注意,其中的ipa文件路径-o "${ipa_path}"必须是绝对路径。否则,您可能会得到,error: Unable to create '.../...ipa'或者将被默默地忽略创建。该死的浪费了我几个小时。
h--n

2
有人可以告诉我{}花括号做什么吗?我假设他们照顾空格,但我可能是错的。
和弦

6
Xcode 8.3 Beta 1完全删除PackageApplication命令。请勿再次使用它,并按照以下建议使用“ xcodebuild -scheme <SchemeName>存档”。
汉斯·克诺歇(HansKnöchel)

283

使用Xcode 4.2,您可以使用-scheme标志来执行此操作:

xcodebuild -scheme <SchemeName> archive

执行此命令后,存档将显示在Xcode Organizer中。


3
是的,更好!为了使其工作,我执行了以下操作:cd到您的项目文件夹,然后运行“ xcodebuild -scheme MyProjectName存档”(因为通常,您使用与您的项目名称相同的方案)
Samuel

18
请注意,除了工作空间和方案之外,该archive操作不支持您通过此调用提供的任何设置 -这仅花费了我几个小时
danyowdee 2012年

5
Xcode 4.4中可以正常工作,我敢肯定在4.3中也可以。请确保您已通过选择正确的Xcode版本xcode-select <path to Xcode.app>
里德埃利斯

2
此外,您必须指定与“计划-scheme <SchemeName>
里德埃利斯

6
这对于创建存档很好,但是xcrun中的PackageApplication实际上创建了.ipa文件。您需要通过TestFlight之类的文件将此文件分发给Beta测试人员
jmstone617

145

使用Xcode 9和Swift更新我的答案

封存

xcodebuild -workspace <ProjectName>/<ProjectName>.xcworkspace \
  -scheme <schemeName> clean archive -configuration release \
  -sdk iphoneos -archivePath <ProjectName>.xcarchive

IPA导出请注意导出选项plist

xcodebuild -exportArchive -archivePath  <ProjectName>.xcarchive \
  -exportOptionsPlist  <ProjectName>/exportOptions.plist \
  -exportPath  <ProjectName>.ipa

对于那些不了解exportOptions.plist的人, 请https://blog.bitrise.io/new-export-options-plist-in-xcode-9


那些使用此工具在teamcity / jenkins等CI / CD工具中构建项目的人,请确保使用正确的xcode安装在构建代理中进行存档和导出。

您可以使用以下2个选项之一。

  1. 使用完整路径进行xcodebuild,
/Applications/Xcode 9.3.1.app/Contents/Developer/usr/bin/xcodebuild
  1. 使用xcode-select,
xcode-select -switch /Applications/Xcode 9.3.1.app

以下是我的旧答案

这是用于创建存档和IPA示例的命令行脚本。我有一个iPhone xcode项目,它位于Desktop / MyiOSApp文件夹中。

一一执行以下命令:

cd /Users/username/Desktop/MyiOSApp/

xcodebuild -scheme MyiOSApp archive \
  -archivePath /Users/username/Desktop/MyiOSApp.xcarchive

xcodebuild -exportArchive -exportFormat ipa \
  -archivePath "/Users/username/Desktop/MyiOSApp.xcarchive" \
  -exportPath "/Users/username/Desktop/MyiOSApp.ipa" \
  -exportProvisioningProfile "MyCompany Distribution Profile"

这已通过Xcode 5进行了测试,对我来说工作正常。


2
它在Xcode6.1.1上完美运行。我选择从终端构建应用程序,因为当我尝试从管理器构建AdHoc分发时,Xcode6给我一个“您的帐户已具有有效证书”的错误。
FormigaNinja 2014年

如果您有WatchKit应用程序,则ipa中有一个名为WatchKitSupport的新文件夹以及一个Symbols文件夹(可能是可选的)。您知道是否有办法使exportArcive也将其导出吗?
RPM

1
xcodebuild -workspace <ProjectName>/<ProjectName>.xcworkspace -scheme <schemeName> clean archive -configuration release -sdk iphoneos -archivePath <ProjectName>.xcarchive 抛出错误:requires a provisioning profile with the Associated Domains feature. Select a provisioning profile for the "Release" build configuration in the project editor.
vbRocks

1
@MohammadRezaKoohkan在旧答案中,我保留了它用于显示参考,您可以在我的答案开头看到有效的导出选项
Raj

1
@Raj yeap,谢谢
Mohammad Reza Koohkan

29

我一直在使用自己的构建脚本来生成用于临时分发的ipa软件包。

die() {
    echo "$*" >&2
    exit 1
}

appname='AppName'
config='Ad Hoc Distribution'
sdk='iphoneos3.1.3'
project_dir=$(pwd)

echo using configuration $config

echo updating version number
agvtool bump -all
fullversion="$(agvtool mvers -terse1)($(agvtool vers -terse))"
echo building version $fullversion

xcodebuild -activetarget -configuration "$config" -sdk $sdk build || die "build failed"

echo making ipa...
# packaging
cd build/"$config"-iphoneos || die "no such directory"
rm -rf Payload
rm -f "$appname".*.ipa
mkdir Payload
cp -Rp "$appname.app" Payload/
if [ -f "$project_dir"/iTunesArtwork ] ; then
    cp -f "$project_dir"/iTunesArtwork Payload/iTunesArtwork
fi

ipaname="$appname.$fullversion.$(date -u +%Y%m%d%H%M%S).ipa"
zip -r $ipaname Payload

echo finished making $ipaname

该脚本还会增加版本号。您可以删除不需要的部分。希望能帮助到你。


3
这是一个很好的解决方案,尽管没有注释也很难阅读您的代码。您能否再写一些有关发生的事情?
Michael Grinich 2010年

xcode在哪里获得“ APPNAME.ipa”名称?从包装->产品名称?
卡洛斯·里卡多

3
现在,使用WatchKit应用程序此脚本还不够。有人知道用watchkit应用提供的ipa文件的新规范吗?
RPM 2015年

看到与带有手表套件的@RPM相同的问题。有什么解决方法吗?
danieljimenez,2015年

@RPM检查出WatchKit的东西。我自己还没有尝试过,但是看起来很彻底,matrixprojects.net
p/

26

xcodebuild工具可以使用-exportArchive标志(从Xcode 5开始)构建和导出存档产品。以前只能通过Xcode Organizer UI进行导出步骤。

首先存档您的应用程序:

xcodebuild -scheme <scheme name> archive

给定$ARCHIVE_PATH.xcarchive文件的路径),请使用以下其中一项从存档中导出应用程序:

iOS .ipa文件:

xcodebuild -exportArchive -exportFormat ipa -archivePath "$ARCHIVE_PATH" -exportPath "myApp.ipa" -exportProvisioningProfile "My App Provisioning profile"

Mac .app文件:

xcodebuild -exportArchive -exportFormat app -archivePath "$ARCHIVE_PATH" -exportPath "myApp.app" -exportSigningIdentity "Developer ID Application: My Software Company"

在这两个命令中,-exportProvisioningProfile-exportSigningIdentity参数都是可选的。man xcodebuild有关语义的详细信息。在这些示例中,iOS版本的供应配置文件指定了AdHoc分发供应配置文件,而Mac应用程序的签名身份指定了要作为第三方应用程序导出的开发人员ID(即未通过Mac App Store分发)。


1
使用xcode工作空间且与cocopods不兼容时不起作用
amleszk 2014年

1
您是否尝试过将-workspace选项添加到xcodebuild(以及工作空间的路径)中?man xcodebuild状态:“要构建Xcode工作区,必须同时传递-workspace和-scheme选项来定义构建”。
Nik

添加了-workspace选项,这对我来说非常有用-我只需要获取第一个命令创建的归档的路径,因此可以将其输入第二个命令。您可以使用-archivePath选项指定在何处创建档案,但我更喜欢其默认位置。这有助于我弄清楚如何获得该路径:stackoverflow.com/a/9024901/813247
robotspacer 2014年

24

我们使用XCode 4.2.1开发了一个iPad应用程序,并希望将构建版本集成到我们的持续集成(Jenkins)中以进行OTA分发。这是我想出的解决方案:

# Unlock keychain
security unlock-keychain -p jenkins /Users/jenkins/Library/Keychains/login.keychain

# Build and sign app
xcodebuild -configuration Distribution clean build

# Set variables
APP_PATH="$PWD/build/Distribution-iphoneos/iPadApp.app"
VERSION=`defaults read $APP_PATH/Info CFBundleShortVersionString`
REVISION=`defaults read $APP_PATH/Info CFBundleVersion`
DATE=`date +"%Y%m%d-%H%M%S"`
ITUNES_LINK="<a href=\"itms-services:\/\/?action=download-manifest\&url=https:\/\/xxx.xxx.xxx\/iPadApp-$VERSION.$REVISION-$DATE.plist\">Download iPad2-App v$VERSION.$REVISION-$DATE<\/a>"

# Package and verify app
xcrun -sdk iphoneos PackageApplication -v build/Distribution-iphoneos/iPadApp.app -o $PWD/iPadApp-$VERSION.$REVISION-$DATE.ipa

# Create plist
cat iPadApp.plist.template | sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATE}/$DATE/" -e "s/\${REVISION}/$REVISION/" > iPadApp-$VERSION.$REVISION-$DATE.plist

# Update index.html
curl https://xxx.xxx.xxx/index.html -o index.html.$DATE
cat index.html.$DATE | sed -n '1h;1!H;${;g;s/\(<h3>Aktuelle Version<\/h3>\)\(.*\)\(<h3>&Auml;ltere Versionen<\/h3>.<ul>.<li>\)/\1\
${ITUNES_LINK}\
\3\2<\/li>\
<li>/g;p;}' | sed -e "s/\${ITUNES_LINK}/$ITUNES_LINK/" > index.html

然后,詹金斯将ipa,plist和html文件上传到我们的网络服务器。

这是plist模板:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>items</key>
    <array>
        <dict>
            <key>assets</key>
            <array>
                <dict>
                    <key>kind</key>
                    <string>software-package</string>
                    <key>url</key>
                    <string>https://xxx.xxx.xxx/iPadApp-${VERSION}.${REVISION}-${DATE}.ipa</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>full-size-image</string>
                    <key>needs-shine</key>
                    <true/>
                    <key>url</key>
                    <string>https://xxx.xxx.xxx/iPadApp.png</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>display-image</string>
                    <key>needs-shine</key>
                    <true/>
                    <key>url</key>
                    <string>https://xxx.xxx.xxx/iPadApp_sm.png</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>xxx.xxx.xxx.iPadApp</string>
                <key>bundle-version</key>
                <string>${VERSION}</string>
                <key>kind</key>
                <string>software</string>
                <key>subtitle</key>
                <string>iPad2-App</string>
                <key>title</key>
                <string>iPadApp</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

要进行此设置,您必须将分发证书和供应配置文件导入指定用户的钥匙串中。


3
您也可以使用Apple的Plistbuddy命令更改plist文件,例如:/ usr / libexec / PlistBuddy -c“ Set:CFBundleVersion 1.2.3.4” /path/to/info.plist。代替玩SED :)
Jelle De Laender

谢谢(你的)信息。我在sed方面比plistbuddy更有经验,所以我选择sed :)
FuePi

1
我建议$WORKSPACE不要$PWD使用发电APP_PATH
理查德(Richard)

16

我发现这里的其他一些答案很难解决。这篇文章是否对我有用。如其他答案中所述,某些路径可能需要是绝对的。

命令:

xcrun -sdk iphoneos PackageApplication \
    "/path/to/build/MyApp.app" \
    -o "output/path/to/MyApp.ipa" \
    --sign "iPhone Distribution: My Company" \
    --embed "/path/to/something.mobileprovision"

15

就像XCode一样,您实际上可以放弃构建,因此您可以测试和交付相同的二进制文件。例如,在我的脚本(类似于上面的脚本)中,我将发布版本签名为AdHoc版本,然后将其存档为IPA进行测试,然后使用发行证书退出并创建一个zip文件,这是我发送到的文件苹果。相关行是:

codesign -f -vv -s "$DistributionIdentity" "$APPDIR"

14

对于 Xcode 7,您有一个简单得多的解决方案。唯一的额外工作是您必须创建用于导出存档的配置plist文件。

(与Xcode 6相比xcrun xcodebuild -help-exportFormat-exportProvisioningProfile不再提及和选项;前者已删除,后者被取代-exportOptionsPlist。)

步骤1,将目录更改为包含.xcodeproject或.xcworkspace文件的文件夹。

cd MyProjectFolder

第2步,使用Xcode或/usr/libexec/PlistBuddy exportOptions.plist创建导出选项plist文件。顺便xcrun xcodebuild -help说一句,它将告诉您必须将哪些键插入到plist文件中。

步骤3,如下创建.xcarchive文件(实际上是文件夹)(build /目录将立即由Xcode自动创建),

xcrun xcodebuild -scheme MyApp -configuration Release archive -archivePath build/MyApp.xcarchive

步骤4,像这样导出为.ipa文件,与Xcode6不同

xcrun xcodebuild -exportArchive -exportPath build/ -archivePath build/MyApp.xcarchive/ -exportOptionsPlist exportOptions.plist

现在,您在build /目录中获得一个ipa文件。只需将其发送到Apple App Store。

顺便说一下,由Xcode 7创建的ipa文件比由Xcode 6创建的ipa文件大得多。


1
如何使用这种方法指定配置文件。我尝试了exportProvisioningProfile,但是它说不能与exportOptionsPlist一起使用...而且无法在我可以找到的plist中指定配置文件...似乎只是采用了与该名称相同的最旧的配置文件建造它(与我想要的相反)
john ellis

包含在名为“ project.pbxproj”的文件中的项目设置具有签名设置,因此-scheme-configuration选项指定了如何对ipa文件进行签名。
DawnSong

当您说“仅将其发送给Apple”时,该过程是什么,因为这不在正常的存档步骤之内?
mix3d

有两种方法可以将其“发送到Apple”,登录到itunesconnect.apple.com或使用Xcode-> Open Developer Tool-> Application Loader。@ mix3d
DawnSong

1
我最终找到了一个全自动解决方案,为此我创建了一个新答案!
mix3d

14

我在下面给出了要执行的步骤的简要说明,以及在以下使用终端生成ipa时要传递的参数:

  1. 转到终端中包含MyApp.xcodeproject文件的文件夹

  2. 通过使用下面给出的命令,您将获得应用程序的所有目标

    /usr/bin/xcodebuild -list 
  3. 执行上述命令后,您将获得一个目标列表,您应该选择一个目标来生成.ipa。

    /usr/bin/xcodebuild -target $TARGET -sdk iphoneos -configuration Release
  4. 上面的命令将构建项目并创建一个.app文件。找到该.app文件的路径是 ./build/Release-iphoneos/MyApp.app

  5. Build成功后,执行以下命令以使用开发人员名称和Provisioning Profile使用以下语法生成应用程序的.ipa:

    /usr/bin/xcrun -sdk iphoneos PackageApplication -v ${TARGET}.app -o ${OUTDIR}/${TARGET}.ipa sign ${IDENTITY}” embed ${PROVISONING_PROFILE}”

上面语法中每个参数的说明:

${TARGET}.app                == Target path (ex :/Users/XXXXXX/desktop/Application/build/Release-iphoneos/MyApp.app)
${OUTDIR}                    == Select the output directory(Where you want to save .ipa file)
${IDENTITY}                   == iPhone Developer: XXXXXXX (XXXXXXXXXX)(which can be obtained from Keychain access)
${PROVISONING_PROFILE}   == Path to the provisioning profile(/Users/XXXXXX/Library/MobileDevice/Provisioning Profiles/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.mobileprovision”)
  1. 将在选定的输出目录“ $ {OUTDIR} ”中生成ipa

我看到此错误“指定的应用程序不存在或不是捆绑目录”
Ansari Awais

2
不建议使用xcrun PackageApplication。
Tunvir Rahman Tusher

8

Xcode 8:


IPA格式:

xcodebuild -exportArchive -exportFormat IPA -archivePath MyMobileApp.xcarchive -exportPath MyMobileApp.ipa -exportProvisioningProfile 'MyMobileApp Distribution Profile'

使用供应配置文件MyMobileApp分发配置文件将存档MyMobileApp.xcarchive作为IPA文件导出到路径MyMobileApp.ipa。

APP格式:

xcodebuild -exportArchive -exportFormat APP -archivePath MyMacApp.xcarchive -exportPath MyMacApp.pkg -exportSigningIdentity 'Developer ID Application: My Team'

使用应用程序阳离子签名标识“开发人员ID应用程序:我的团队”将存档MyMacApp.xcarchive作为PKG文件导出到路径MyMacApp.pkg。安装程序签名身份开发人员ID安装程序:“我的团队”用于隐式地对导出的软件包进行签名。

Xcodebuild手册页


7

转到项目根目录所在的文件夹,然后:

xcodebuild -project projectname -activetarget -activeconfiguration archive

7
这似乎不起作用。“归档”构建动作在XCode 3.2.2(最终版)中不可用。
Martin Cote 2010年

4

更进一步,使用Xcode 7通过命令行上传到iTunesConnect !(假设您使用.ipa已使用正确的发行资料和签名身份签名的。)

输入altool,用于Application Loader的CLI界面(docs,第38页)。Xcode.app的结构中隐藏着一个方便的功能,可让我们直接上传到ItunesConnect。

/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool

只需运行$ altool --upload-app -f file -u username [-p password]即可将您刚铸造的硬币.ipa直接上传到Apple。密码是可选的,如果您不使用该命令,则会提示您输入密码。

如果在验证步骤中应用程序有任何问题,控制台将把它们打印出来。

altool如果您不想保存其位置,则可能必须将路径导出到。

export PATH=$PATH:/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/

而已!只需登录iTunesConnect.com,然后选择新的版本以通过testflight进行测试。

最后说明:如果出现错误Exception while launching iTunesTransporter: Transporter not found at path: /usr/local/itms/bin/iTMSTransporter. You should reinstall the application提示,则可以按照此SO答案的建议运行符号链接到正确的位置:

ln -s /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/itms /usr/local/itms

3

为了改进Vincent的答案,我编写了一个脚本来做到这一点:xcodearchive
它允许您通过命令行将项目存档(生成ipa)。可以将其视为xcodebuild命令的姐妹,但可以进行归档。

代码可在github上找到:http : //github.com/gcerquant/xcodearchive


该脚本的一个选项是启用带有时间戳的存档中dSYM符号的存档。没有任何理由不再保留符号,也无法将您以后可能收到的崩溃日志符号化。


@KunalBalani不,我不希望它正确处理工作区。看一下代码,对其进行调整不会花费很多工作。拉请求欢迎!
纪尧姆

3

如何使用命令构建iOS项目?

Clean : codebuild clean -workspace work-space-name.xcworkspace -scheme scheme-name 

&&

Archive : xcodebuild archive -workspace work-space-name.xcworkspace -scheme "scheme-name" -configuration Release -archivePath IPA-name.xcarchive 

&&

Export : xcodebuild -exportArchive -archivePath IPA-name.xcarchive -exportPath IPA-name.ipa -exportOptionsPlist exportOptions.plist


什么是ExportOptions.plist?

Xcode中需要ExportOptions.plist。创建ipa文件时,它可以让您指定一些选项。使用Xcode存档应用程序时,可以在友好的UI中选择选项。

重要说明:ExportOptions.plist AppStore中的发布和开发方法不同

exportOptions_release〜方法=应用商店

发展历程

exportOptions_dev〜方法=开发


2

请尝试使用xctool,它是Apple xcodebuild的替代产品,可以更轻松地构建和测试iOS和Mac产品。对于持续集成特别有用。它具有一些额外的功能:

  1. 运行与Xcode.app相同的测试。
  2. 构建和测试结果的结构化输出。
  3. 人性化的ANSI彩色输出。

3号非常有用。如果有人能阅读xcodebuild的控制台输出,我也不知道,通常它给了我一行5000多个字符。比论文更难读。

xctool:https//github.com/facebook/xctool



2

更新到Xcode 8后,我发现企业ipa生成由

/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app" -o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" --sign "${DEVELOPER_NAME}" --embed "${PROVISONING_PROFILE}" 

由于某些签名问题,无法启动命令。日志表明“警告:不推荐使用PackageApplication,请 xcodebuild -exportArchive改用。

因此,我切换到其他选项xcodebuild -exportArchive,一切恢复正常。


1

您的意思是验证/共享/提交选项?我认为这些特定于Xcode,不适合命令行构建工具。

我敢打赌,我敢打赌你可以编写一个脚本来帮你。看起来它们只是~/Library/MobileDevice/Archived Applications/与UUDI和plist 存储在一起。我也无法想象对验证器进行反向工程也很困难。

我感兴趣的自动化过程是将构建发送到Beta测试人员。(由于App Store提交的情况很少发生,因此我不介意手动执行此操作,特别是因为我经常需要添加新的描述文本。)通过使用Xcode的CLI执行伪Build + Archive,我可以从每次代码提交触发自动构建,使用嵌入式配置文件创建IPA文件,并将其通过电子邮件发送给测试人员。


我澄清了我的问题。当您在上方说“我可以”时,您是说实际上可以在今天这样做吗?
丹·法布利奇

2
是。我正在将Hudson Continuous Integration与运行xcodebuild并生成IPA 的自定义脚本一起使用。
Michael Grinich 2010年

抱歉,我参加聚会很晚,但是TestFlight有一个非常简单的上传API,您应该签出
self.name 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.