使用 xcodebuild 构建时如何获得 XCode 功能?

How do I get XCode capabilities when building with xcodebuild?

我在 XCode 中为我的应用程序使用后台模式 (voip) 功能。当我通过 XCode 使用允许此功能的配置文件构建应用程序时 - 该应用程序可以运行。但随后我通过以下方式从命令行构建我的 iOS 应用程序:

xcodebuild -workspace test.xcworkspace -scheme test -sdk iphoneos clean build archive -archivePath test.xcarchive
xcodebuild -exportArchive -archivePath test.xcarchive -exportPath acc exportFormat ipa

以这种方式构建 ipa 并将其安装在 iPhone 上时,后台模式 voip 在应用程序中未激活。使用 xcodebuild 通过命令行构建时如何激活后台模式功能?

执行 xcodebuild 取决于您使用 Xcode 设置项目的方式。我在这里假设你已经这样做了。

关于背景模式,您还需要确保您的 Info.plist(或您命名的任何名称)包含您想要的 UIBackgroundModes(这是原始密钥)。

当您通过 xcodebuild 构建时,如果您的项目设置正确,所有正确的信息都会被获取。

有关后台执行的更多信息在这里:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

显然 "xcodebuild -exportArchive ..." 行在没有使用 -exportOptionsPlist 参数的情况下被弃用。所以我在看起来像的同一目录中创建了一个 options.plist:

<plist version="1.0">
<dict>
    <key>teamID</key>
    <string>734KHEMHW2</string>
    <key>method</key>
    <string>development</string>
    <key>uploadSymbols</key>
    <true/>
</dict>
</plist>

使用我在 http://developer.apple.com 上找到的相应团队 ID。

然后使用以下行导出到 ipa:

xcodebuild -exportArchive -exportOptionsPlist options.plist -archivePath test.xcarchive -exportPath .

这成功创建了启用了 voip 功能的 ipa。