Xcode - 命令行构建

时间:2017-06-19 11:40:16

标签: ios xcode shell command-line xcodebuild

我一直致力于创建一个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标识符和团队更改为客户。将PRODUCT_BUNDLE_IDENTIFIER=$com.changed.appname添加到xcodebuild的第一行会将Bundle标识符更改为我需要的吗?

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

这是对的吗?团队怎么样?或者我应该使用exportOptions.plist进行这些设置吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

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

因此,保证改变您想要的方式的最佳方法是操纵xcodeproj文件

  1. 将配置样式更改为手动
  2. sed -ie "s/ProvisioningStyle = \".*\"/ProvisioningStyle = \"Manual\"/" <project_name>.xcodeproj/project.pbxproj

    1. 更改代码签名标识
    2. sed -ie "s/CODE_SIGN_IDENTITY = \".*\"/CODE_SIGN_IDENTITY = \"<signing_identity_name>\"/g" <project_name>.xcodeproj/project.pbxproj

      1. 更改配置文件
      2. 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

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