【问题标题】:iphone build error that makes me want to buy a nail guniphone构建错误让我想买钉枪
【发布时间】:2011-03-02 11:56:24
【问题描述】:

我只是想为一个 iphone 应用程序构建一个简单的更新(我以前做过),但现在由于某种原因我收到了这个错误。谁能告诉我这是什么意思?

Command/Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copyplist failed with exit code 127
sh: plutil: command not found

这是构建结果:

CopyPNGFile /Users/me/path/build/Dist-iphoneos/MyApp.app/img_000.png images/img_000.png
    cd /Users/me/
    setenv COPY_COMMAND /Developer/Library/PrivateFrameworks/DevToolsCore.framework/Resources/pbxcp
    setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/System/Library/Frameworks/JavaVM.frameworK/Versions/1.6/Home/"
    "/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS Build System Support.xcplugin/Contents/Resources/copypng" -compress "" /Users/path/images/img_000.png /Users/me/path/build/Dist-iphoneos/MyApp.app/img_000.png
sh: dirname: command not found

CopyPlistFile /Users/me/path/build/Dist-iphoneos/MyApp.app/Entitlements.plist Entitlements.plist
    cd /Users/me/
    setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/System/Library/Frameworks/JavaVM.frameworK/Versions/1.6/Home/"
    /Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copyplist --convert binary1 Entitlements.plist --outdir /Users/me/path/build/Dist-iphoneos/MyApp.app
sh: plutil: command not found

【问题讨论】:

  • +1 for nailgun 图像...您是否检查了所有目标、构建设置?上次我遇到类似问题时,它是由某个设置字段开头的空格引起的。
  • 是的,我已经看过好几次了。有趣的是,退出代码 127 没有一个单一的谷歌搜索结果。
  • 尝试将这些命令复制/粘贴到终端中?也可能只是有些无聊,需要重新启动。
  • Entitlements.plist 和 ing_000.png 文件发生了什么变化?
  • 错误 127 来自 shell 脚本本身,意思是“找不到文件”。在终端中,尝试输入以下内容: foobar ;回声$?您将看到如下内容: -bash: foobar: command not found 127 其中 127 是操作的错误代码(来自 $?)

标签: iphone xcode build


【解决方案1】:

您的 PATH 变量由于某种原因被搞砸了。你想看看这到底是怎么发生的。这是你的(用冒号分隔以示强调):

setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
    :/Developer/usr/bin
    :/System/Library/Frameworks/JavaVM.frameworK/Versions/1.6/Home/"

这是一个工作 PATH 的样子:

setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
    :/Developer/usr/bin
    :/usr/bin
    :/bin
    :/usr/sbin
    :/sbin"

(行分隔是为了阐明PATH变量是如何分隔路径的)

注意我的有 /usr/bin:/bin:/usr/sbin:/sbin 而你的没有?这就是问题所在。 shell 脚本只在其路径中查找可执行文件,而当文件位于 /usr/bin/ 时,它不会找到它们。

有关 Xcode PATH 的 SO 讨论,请参阅例如where is $PATH set in xcode?

【讨论】:

  • 感谢您的信息。我希望这行得通。你能告诉我如何将这些项目添加到 PATH 中吗?
  • 我可以更改路径,但仍然无法正常工作。请在下面查看我的“答案” - 不适合评论框
  • 啊,奇怪。看来 Xcode 实际上并没有使用您设置的 PATH 。如果你看一下你的行,它会出现 setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/System/Library/Frameworks/JavaVM.frameworK/Versions/1.6/Home /" 仍然(来自您下面的答案)。
  • developer.apple.com/mac/library/qa/qa2001/qa1255.html 似乎是您问题的最终答案。作为记录,看起来你的问题根源在于 JavaVM,因为它在你的路径中,而不是在我的路径中。安装它,它可能会以某种方式为您破坏默认路径。
【解决方案2】:

是否有可能您的路径环境变量未以某种方式设置?

你有:

setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/System/Library/Frameworks/JavaVM.frameworK/Versions/1.6/Home/" /Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copyplist --convert binary1 Entitlements.plist --outdir /Users/me/path/build/Dist-iphoneos/MyApp.app

当我展示时:

setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/opt/local/bin:/usr/local/bin:/bin:/sbin:/usr /bin:/usr/sbin" builtin-infoPlistUtility test34-Info.plist -genpkginfo /Users/gnd/Desktop/test34/build/Debug-iphonesimulator/test34.app/PkgInfo -expandbuildsettings -format binary -platform iphonesimulator -o /Users/gnd/Desktop/test34/build /Debug-iphonesimulator/test34.app/Info.plist

我没有在你的路径中看到 /usr/bin。

(在终端:
回声 ${PATH}

尽管大多数 OS X GUI 应用程序从 ~/.MacOSX/environment.plist 获取路径,但不是 100% 确定 Xcode。


附加信息:

来自“man bash”页面:

当 bash 作为交互式登录 shell 或作为带有 --login 选项的非交互式 shell 调用时,它首先从文件 /etc/profile 中读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,并从第一个存在且可读的文件中读取并执行命令。

因此,如果您在 .bash_login 中有它但 .bash_profile 存在,那么您的更改将不会被看到。

还要注意上面关于 GUI 应用程序 PATH 定义替代文件的注释。

您可能需要注销然后重新登录才能将更改“接受”。

【讨论】:

  • 如何将 /usr/bin 添加到路径中?
【解决方案3】:

我遇到了同样的问题....问题是 plutil 不在 PATH 中的任何目录中。

我的解决方案是从 /usr/bin 复制到 PATH 中的 /user/local/bin。

不知道问题出在 Xcode、OS X 还是 Apple。

【讨论】:

    【解决方案4】:

    plutil 通常位于/usr/bin。确保它在那里。如果不是,您可能已经安装了开发者工具,而没有取消选中(或取消选中)系统工具复选框,它将基本的 Mac OS X 程序员工具放入 /usr。

    【讨论】:

    • /usr/bin 相对于什么目录?搜索名为“usr”的文件夹会显示大约 30 个文件夹。如果这是问题,我该如何解决?
    • 如果它以斜杠开头,它是绝对路径,而不是相对路径。您的操作系统启动驱动器上有一个 /usr/bin 目录,这就是 plutil 之类的工具所在的位置。 (它不会出现在 Finder 中。您必须使用转到文件夹才能到达那里,或者使用终端命令行查看。)如果它们不存在,请重新安装 Xcode 工具并确保检查系统工具复选框。
    • 好的,我验证了 plutil 存在。我还重新安装了整个 Xcode/iphone 包,并检查了系统工具。现在我得到了同样的错误,即使我只是尝试用模拟器/调试来构建。太棒了。
    【解决方案5】:

    尝试重新安装 SDK?

    【讨论】:

    • 本来想试试的,但是下载SDK后发现现在需要Snow Leopard。去下载雪豹,发现是“盒装”购买。每次我觉得我不能再讨厌苹果了,他们就会另辟蹊径……为什么他们不能提供以前版本的下载?
    • 可能是因为 Snow Leopard 不是以前的版本,但实际上是撰写本文时的当前版本。另一方面,我同意他们所有的操作系​​统都应该可以(付费)下载。
    • 我认为 sol 正在寻找旧版本的 SDK。尝试点击“Mac Dev Center”、“Developer Downloads”、“Developer Tools”,然后下载 Xcode 3.1.4。它没有 iPhone SDK,但也不应该覆盖它(但请保留 /Developer/Platforms 的备份,以防万一)。我只是在发布后立即下载所有内容并将其存档以备不时之需。
    • 是的,我实际上找到了我正在使用的当前 SDK 并重新安装了它。不幸的是,这根本没有帮助。
    【解决方案6】:

    我已经查看了提供的答案,但没有一个对我有用。问题依然存在。

    我仔细查看了 xcode 中的错误,发现它在错误的位置寻找图像。就我而言,我复制并重命名了包含我的项目的目录。没有更新对我的图片的引用。

    我通过右键单击 finder 中的项目文件并单击 Show Package Contents 解决了我的问题。然后我在 xcode 中打开了 *.pbxproj。我对文件进行了查找和替换,以用新文件夹替换旧文件夹的名称。

    关闭并打开 xcode 后,这解决了我的问题。

    我希望这对其他人有所帮助...

    【讨论】:

      【解决方案7】:

      我以前见过这个错误。问题在于损坏的 .png 文件。该错误非常具有欺骗性。尝试删除受影响的 .png 并将其从该文件的备份或干净版本中替换回您的项目中。这应该可以清除构建错误。

      【讨论】:

        【解决方案8】:

        如果您通过 finder 删除文件(不在 xcode 中)然后尝试存档,此错误也会显示。因此,请确保您的所有文件都没有以红色列出,如果它们已从您的项目中删除。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-04-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多