Xcode - 命令行构建

Posted

技术标签:

【中文标题】Xcode - 命令行构建【英文标题】:Xcode - command line build 【发布时间】:2017-06-19 11:40:16 【问题描述】:

我一直在努力创建一个 shell 脚本,它可以让我从我的工作项目中存档和提取 ipa 文件。

#!/bin/sh
cd `dirname $0`
xcodebuild -scheme appName clean archive -archivePath ./build/AppName
xcodebuild -exportArchive -exportOptionsPlist ./build/exportOptions.plist -archivePath  ./build/AppName.xcarchive -exportPath ./build/appName

exportOptions.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>ad-hoc</string>
    </dict>
</plist>

我还需要一种方法来将 Bundle 标识符和 Team 更改为客户的。将PRODUCT_BUNDLE_IDENTIFIER=$com.changed.appname 添加到xcodebuild 的第一行是否会将Bundle 标识符更改为我需要的?

xcodebuild -scheme appName PRODUCT_BUNDLE_IDENTIFIER=$com.changed.appname clean archive -archivePath ./build/AppName

这是对的吗?球队呢?或者我应该为这些设置使用 exportOptions.plist 吗?

谢谢。

【问题讨论】:

您是说要为 A 团队构建应用程序并为 B 团队导出 IPA?这可能是由于辞职,但这不是一项简单的任务,因为 xcodebuild 不支持开箱即用...如果您的项目在任何地方都没有硬编码的 bundleID ,例如在 Info.plist 中 最后我选择从 shell 脚本中更改包标识符:PRODUCT_BUNDLE_IDENTIFIER="com."在归档的 xcodebuild 行中。对于团队,我更改了我的 exportOptions.plist 以添加“teamID”键和新的团队标识符。 【参考方案1】:

您可以使用这些命令直接操作项目文件。根据我的经验,xcodebuild 命令有时不接受我们作为配置文件、团队 ID 等传递的参数。

所以保证它改变你想要的方式的最好方法是操作xcodeproj文件

    将配置样式更改为手动

sed -ie "s/ProvisioningStyle = \".*\"/ProvisioningStyle = \"Manual\"/" &lt;project_name&gt;.xcodeproj/project.pbxproj

    更改代码签名身份

sed -ie "s/CODE_SIGN_IDENTITY = \".*\"/CODE_SIGN_IDENTITY = \"&lt;signing_identity_name&gt;\"/g" &lt;project_name&gt;.xcodeproj/project.pbxproj

    更改配置文件

sed -ie "s/PROVISIONING_PROFILE = \".*\"/PROVISIONING_PROFILE = \"&lt;provisioning_profile_udid&gt;\"/g" &lt;project_name&gt;.xcodeproj/project.pbxproj

sed -ie "s/PROVISIONING_PROFILE_SPECIFIER = \".*\"/PROVISIONING_PROFILE_SPECIFIER = \"&lt;provisioning_profile_name&gt;\”/g" &lt;project_name&gt;.xcodeproj/project.pbxproj

注意:请注意空格,此方法使用正则表达式来匹配和替换项目文件中的值

【讨论】:

以上是关于Xcode - 命令行构建的主要内容,如果未能解决你的问题,请参考以下文章

命令行中的 Xcode“构建和存档”

Xcode - 命令行构建

XCode:用于 xcode 命令行构建的 Documents and Library 文件夹

在 XCode 4.3 中从命令行构建时链接任意库

xcode - 使用命令行构建应用程序会导致配置文件错误

XCode 13 警告:不推荐以手动顺序构建目标 - 检查“为命令行构建并行构建”但不存在这样的 UI 选项?