我正忙于Jenkins构建,将构建iOS应用程序。我已经成功地用这个命令创建了一个存档:
xcodebuild archive -archivePath build/app.xcarchive
现在我正试图导出该存档与指定输出文件名,但不能得到这个工作。在下面的示例中,我想要一个名为app.ipa的输出文件,但是我得到的只是一个名为app.ipa的文件夹,其中包含一个名为.ipa
的ipa文件。xcrun xcodebuild -exportArchive -exportPath build/app.ipa -archivePath build/app.xcarchive/ -exportOptionsPlist exportOptions.plist
Outputs a file /build/app.ipa/<projectname>.ipa
苹果的XCodeBuild文档说,你可以指定输出路径,包括文件名:
-exportPath destinationpath指定导出产品的目标,包括导出文件的名称。
https://web.archive.org/web/20170620204608/https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/xcodebuild.1.html
这样做的原因是,我想保持构建通用,以便我通过它发送的任何项目将导致app.ipa,而不需要我跟踪项目名称和不同的输出文件等。
这是open radar中的一个bug: "xcodebuild exportArchive -exportPath"不写文档中要写的内容
对于XCode 11及更早版本:
ArchiveAction标签在.xcscheme文件中可以有属性customArchiveName,可以设置为任何你喜欢的。
<ArchiveAction
buildConfiguration = "AdHoc_Example"
customArchiveName = "app"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
当您通过-exportOptionsPlist
导出存档时,这将给您app.ipa
。
如果你做一个xcodebuild --help
,它会显示:
-exportPath PATH specifies the destination for the product exported from an archive
嗯。
要解决这个问题,您可以在之后重命名文件。
mv "oldname" "newname"
您也可以编辑您的Info.plist:
<key>CFBundleName</key>
<string>app</string>
将给出ipa.app
如果省略它,它将具有.xcarchive
文件的名称(默认的方案名称)
cf: https://stackoverflow.com/a/7908397