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\"/" <project_name>.xcodeproj/project.pbxproj
-
更改代码签名身份
sed -ie "s/CODE_SIGN_IDENTITY = \".*\"/CODE_SIGN_IDENTITY = \"<signing_identity_name>\"/g" <project_name>.xcodeproj/project.pbxproj
-
更改配置文件
sed -ie "s/PROVISIONING_PROFILE = \".*\"/PROVISIONING_PROFILE = \"<provisioning_profile_udid>\"/g" <project_name>.xcodeproj/project.pbxproj
sed -ie "s/PROVISIONING_PROFILE_SPECIFIER = \".*\"/PROVISIONING_PROFILE_SPECIFIER = \"<provisioning_profile_name>\”/g" <project_name>.xcodeproj/project.pbxproj
注意:请注意空格,此方法使用正则表达式来匹配和替换项目文件中的值
【讨论】:
以上是关于Xcode - 命令行构建的主要内容,如果未能解决你的问题,请参考以下文章