我一直在创建一个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用于这些设置?
谢谢。
最佳答案
您可以使用这些命令直接操作项目文件。根据我的经验,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
注意:请注意空格,此方法使用正则表达式来匹配和替换项目文件中的值
关于ios - Xcode-命令行构建,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44629590/