我有这个脚本自动增加每个构建的内部版本号:
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $INFOPLIST_FILE)
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" $INFOPLIST_FILE
我将它插入“复制包资源”之前的构建阶段。首先,在Shell Field中我保留了默认的/ 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会出错?
答案 0 :(得分: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
我尝试clean
并删除Derived Data
但没有成功。事实证明,实际的解决方案非常简单。我发现在build
期间,脚本试图在Xcode实际生成plist
之前将生成的值添加到plist
。
Targets > Build Phases > Extra Version Data
是否已运行此脚本。
但Targets > Build Phases > Copy Bundle Resources
是生成plist
的地方。
点击并拖动Extra Version Data
,使其在Copy Bundle Resources
之后列出,因此,在脚本尝试添加生成的值之前构建plist
。
然后build
并以啤酒欢喜。
(使用Xcode 5.1)
答案 1 :(得分:0)
我刚遇到这个问题,发现我的INFOPLIST_FILE文件名中有一个空格,因为创建了一个新目标,而XCode附加了后缀'copy'。似乎PlistBuddy无法像创建此脚本那样处理该空间。
在没有空格的情况下重命名文件并更新名称以在构建设置中匹配时,此错误消失了。
答案 2 :(得分: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/
答案 3 :(得分:0)
同样的问题也发生在我身上。 删除派生数据,然后清理并构建正在解决问题。