Xcodebuild无今日和手表扩展的目标

4
我的项目有四个目标,它们分别是:
  • MainTarget
  • TodayTarget
  • WatchTarget
  • WatchExtensionTarget
我尝试使用xcodebuild命令将构建目标指定为MainTarget,但由于主目标的Build Phases添加了Embed App extension和Embed Watch Content,因此Today Target和Watch也会被构建。 enter image description here 是否有任何方法可以实现这一点?
1个回答

0

编辑:抱歉,我完全误读了你的问题。

如果你的MainTarget依赖于你的其他目标,如手表应用和今日小部件,则在构建时无法将它们排除在外。

但是,如果你想删除手表应用和今日小部件,则可以尝试从“目标依赖项”构建阶段(你屏幕截图的顶部)中删除它们,然后还要删除你所突出显示的底部的两个构建阶段。

这意味着你已经完全从你的应用程序目标中删除了它们,如果你想要它们回来,你就必须再次添加它们。


旧答案(理解错误)

你应该能够通过xcodebuild构建MainTarget,因为Today Extension/Watch Targets应该在顶部的“Target Dependancies”部分中。

你应该能够使用类似以下的内容:

xcodebuild -workspace ".//MyProject.xcworkspace" -scheme "MyMainTargetSceme"  -destination "generic/platform=iOS" -configuration "Release" -derivedDataPath "DerivedData" clean archive -archivePath "builds/87/MyProject-Release/MyProject-Release-87.xcarchive"

生成.xcarchive文件,以便在以后导出应用程序...

然后,您也可以使用以下命令将归档文件导出为有效的.ipa文件:

xcodebuild -exportArchive -archivePath "builds/87/MyProject-Release/MyProject-Release-87.xcarchive" -exportPath "builds/87/MyProject-Release" -exportOptionsPlist "ipa_export_options.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>method</key>
    <string>same-as-archive</string>
</dict>
</plist>

你可以通过运行xcodebuild --help命令查看你的plist可用的键/值。


我正在考虑复制MainTarget,并在复制的目标上删除Extension和Watch,但我担心的是当MainTarget更改Build Setting时,我必须为新目标进行同步。 - johnMa
你说得对...复制主目标可能有点麻烦...我可以问一下,为什么有时候你想要构建而不使用监视/扩展?可能有更好的解决方案。 - liamnichols
当我们的应用程序交付到App Store时,我想要构建一个包含手表/扩展的存档。但是当我将我们的应用程序交付给越狱iPhone的测试用户时,我想要构建一个不包含手表/扩展的版本,因为我们只想在MainTarget上测试新功能,并且交付一个开放组容量的目标将导致他们的手机崩溃。 - johnMa
我知道这与原问题无关,但为了让一个测试版测试员使用您的应用程序似乎有点过度了。测试应用程序通常需要使用与您将要向公众推出的完全相同的版本,但在您的情况下不是这样。我猜您将不得不复制您的“MainTarget”,然后确保它保持同步。这不应该是太大的问题,只需确保尝试将尽可能多的设置配置为项目级别(而不是目标级别),以便它们在目标之间共享。 - liamnichols

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