2017-06-19 122 views
0

我一直在创建一个shell脚本,它可以让我从我的工作项目中存档和提取ipa文件。Xcode - 命令行版本

#!/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> 

我将进一步需要一种方法来捆绑标识符和团队改变客户的。将​​添加到xcodebuild的第一行,是否会将Bundle标识符更改为我所需要的?

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

这是正确的吗?团队呢?或者,我应该使用exportOptions.plist进行这些设置?

谢谢。

+0

你是说你要为团队A构建应用程序并为团队B导出IPA?这可能是由于辞职造成的,但这不是一项简单的任务,因为xcodebuild开箱即不支持此功能。如果您的项目没有任何硬编码的bundleID,则可以通过覆盖您提及的PRODUCT_BUNDLE_IDENTIFIER来更改bundleID。 ,例如在Info.plist中 –

+0

最后,我选择使用以下命令从shell脚本更改包标识符:PRODUCT_BUNDLE_IDENTIFIER =“com。”在xcodebuild的归档行中。对于团队,我已经更改了我的exportOptions.plist以添加“teamID”键和新的团队标识符。 – Macaret

回答

0

您可以使用这些命令直接操作项目文件。从我的经验,有时xcodebuild联编命令不接受我们传递的调配谱,团队ID等参数..

因此,要保证它改变了你所希望的方式最好的办法是操纵xcodeproj文件

  1. 更改配置样式为手动

sed -ie "s/ProvisioningStyle = \".*\"/ProvisioningStyle = \"Manual\"/" <project_name>.xcodeproj/project.pbxproj

  • 更改代码签名IDE ntity
  • sed -ie "s/CODE_SIGN_IDENTITY = \".*\"/CODE_SIGN_IDENTITY = \"<signing_identity_name>\"/g" <project_name>.xcodeproj/project.pbxproj

  • 更改的provisioning profile
  • 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

    注意:请留意的空间,此方法使用正则表达式来匹配和替换v你的项目文件中的线索