2

我制作了这个脚本来自动增加每个构建的构建号:

#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $INFOPLIST_FILE)
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" $INFOPLIST_FILE

我将它插入到“复制捆绑资源”之前的构建阶段。首先,在 Shell 字段中,我保留了默认的 /bin/sh,但它给了我一个Shell Script Invocation Error说法:

Command /bin/sh failed with exit code 1

所以我查找了要做什么,我发现将 Shell 更改为/bin/bash可以修复它。我这样做了,但我仍然有同样的错误。它仍然告诉我,Command /bin/sh failed with exit code 1. 如果 /bin/sh 不再存在,为什么它仍然告诉我我有错误?

4

4 回答 4

3

我知道这个问题已经有一年半的历史了,但是在搜索这个问题时,这个问题出现在搜索结果的顶部。我发现了一个我想分享的不同修复:

这是我在使用 plistbuddy 脚本时收到的错误详细信息(我假设这与 OP 看到的错误相同)。

Set: Entry, ":CFBundleBuildVersionString", Does Not Exist
File Doesn't Exist, Will Create: /Users/*YourFilePathHere/YourAppName*.app/Info.plist
Set: Entry, ":CFBundleBuildDateVersionString", Does Not Exist
Command /bin/sh failed with exit code 1

屏幕截图命令 bin sh 失败,退出代码 1 错误

我尝试clean删除Derived Data但没有成功。事实证明,实际的解决方案非常简单。我发现在build脚本期间试图将生成的值添加到Xcode 实际生成的值plist之前。plist

屏幕截图目标构建阶段

Targets > Build Phases > Extra Version Data有没有运行这个脚本。但是Targets > Build Phases > Copy Bundle Resourcesplist生成的地方。

屏幕截图目标构建阶段

单击并拖动Extra Version Data以使其在之后列出Copy Bundle Resourcesplist在脚本尝试添加生成的值之前构建。

屏幕截图目标构建阶段已更正

然后build和啤酒一起欢欣鼓舞。

(使用 Xcode 5.1)

于 2014-05-14T17:14:00.517 回答
0

我刚刚遇到了这个问题,发现我的 INFOPLIST_FILE 的文件名中有一个空格,这是因为创建了一个新目标并且 XCode 附加了后缀“副本”。似乎 PlistBuddy 无法以创建此脚本的方式处理该空间。

一旦我重命名了没有空格的文件并更新了名称以匹配构建设置,这个错误就消失了。

于 2012-12-11T05:33:19.083 回答
0

在我的 Xcode 项目中使用新的 Fabric Cocoapod 后,我遇到了类似的问题。

我不得不将 Fabric 脚本从:更改 ${PODS_ROOT}/Fabric/Fabric.framework/run ... 为: "${PODS_ROOT}/Fabric/Fabric.framework/run" ... 因为我在指向我的 cocoapods 根位置的目录之一的名称中有一个空格:

~/Documents/My Directory Name/My_Xcode_Project_Directory/

于 2015-07-30T02:05:37.027 回答
0

同样的问题也发生在我身上。删除派生数据然后清理和构建正在解决问题。

于 2017-04-12T08:47:57.237 回答