【问题标题】:Setting PRODUCT_NAME for CocoaPods project via shell script通过 shell 脚本为 CocoaPods 项目设置 PRODUCT_NAME
【发布时间】:2016-07-15 18:29:30
【问题描述】:

我有一个使用可可豆荚的项目。

我无法在 xcodebuild 中设置 PRODUCT_NAME,它总是会导致编译时错误。

/usr/bin/xcodebuild -scheme $Scheme -workspace $WorkSpaceOfProject -configuration 调试清理构建 CONFIGURATION_BUILD_DIR=$PathToApp "CODE_SIGN_IDENTITY=$CodeSigningIdentity" "PRODUCT_BUNDLE_IDENTIFIER=$BundleIdentifier" "PROVISIONING_PROFILE=$ProvisioningProfileIdentity" "PRODUCT_NAME =$Appname"

未知:0:错误:未找到底层 Objective-C 模块“Appname”

如果我从上面的脚本中删除 PRODUCT_NAME,那么它编译成功但不幸的是我必须通过脚本设置应用程序名称

我尝试按照某人的建议设置 -xcconfig ,但也没有成功。

如何通过脚本更改应用名称,同时用可可豆编译应用?

如果我使用项目文件而不是工作区来编译它,它会毫无问题地执行。这是脚本:

/usr/bin/xcodebuild -target $Target -project $ProjectFilePathAbsolute -configuration Debug clean build CONFIGURATION_BUILD_DIR=$PathToApp "CODE_SIGN_IDENTITY=$CodeSigningIdentity" "PRODUCT_NAME =$Appname" "PRODUCT_BUNDLE_IDENTIFIER=$BundleIdentifier" "PROVISIONING_PROFILE=$ProvisioningProfileIdentity"

但我必须使用工作区进行编译,因为我使用的是 cocoapods。

非常欢迎任何建议。

【问题讨论】:

  • 如何设置变量Appname?请注意,詹金斯变量区分大小写。另外,在执行之前尝试回显整个调用,看看 xcodebuild 实际得到了什么。
  • 也可以尝试使用${<variable name>} 语法。
  • No No .. 问题不在于为变量赋值....实际上值被赋值了......我已经更新了我的问题..请检查一下

标签: ios shell cocoa jenkins xcodebuild


【解决方案1】:

我通过使用 PlistBuddy 解决了上述问题,而在 xcodebuild 命令中我没有使用 PRODUCT_NAME

这是我使用的脚本

/usr/libexec/PlistBuddy -c "Set :CFBundleName test" info.plist

/usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName test" info.plist

/usr/bin/xcodebuild -scheme $Scheme -workspace $WorkSpaceOfProject -configuration 调试干净构建 CONFIGURATION_BUILD_DIR=$PathToApp "CODE_SIGN_IDENTITY=$CodeSigningIdentity" "PRODUCT_BUNDLE_IDENTIFIER=$BundleIdentifier" "PROVISIONING_PROFILE=$ProvisioningProfileIdentity" "PRODUCT_NAME =$Appname"

【讨论】: