ibtool在Xcode 7.1 Beta中无法编译故事板。

10

我已经从Xcode 7.0 Beta 3更新到了7.1 Beta(包括7.0 GM在内的所有中间版本都存在启动崩溃bug,只有在7.1 Beta中修复了我的项目),但由于以下错误,我无法构建我的项目:

CompileStoryboard MyApp/Resources/Storyboards/Main.storyboard  
    cd /Users/me/Developer/my-app  
    export PATH="/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"  
    export XCODE_DEVELOPER_USR_PATH=/Applications/Xcode-beta.app/Contents/Developer/usr/bin/..  
    /Applications/Xcode-beta.app/Contents/Developer/usr/bin/ibtool --errors --warnings --notices --module MyApp --output-partial-info-plist /Users/me/Library/Developer/Xcode/DerivedData/MyApp-bwakexzthboxucdaodqtbbbwgsaz/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Main-SBPartialInfo.plist --auto-activate-custom-fonts --target-device iphone --minimum-deployment-target 8.0 --output-format human-readable-text --compilation-directory /Users/me/Developer/my-app/MyApp/Resources/Storyboards/Main.storyboard  


/ com.apple.ibtool.errors */  
: error: Not enough arguments provided; where is the input document to operate on?  

Xcode已配置使用Xcode 7.1 (7B60)命令行工具:

$ xcode-select -p  
/Applications/Xcode-beta.app/Contents/Developer  

看起来ibtool是正确的版本:

$ ibtool --version  
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE plist PUBLIC "-/  
<plist version="1.0">  
<dict>  
  <key>com.apple.ibtool.version</key>  
  <dict>  
  <key>bundle-version</key>  
  <string>9046</string>  
  <key>short-bundle-version</key>  
  <string>7.1</string>  
  </dict>  
</dict>  
</plist>  

编辑:比较成功在Xcode 7.0 Beta 3中构建的输出(为了清晰起见进行格式化):

CompileStoryboard MyApp/Resources/Storyboards/Main.storyboard
    cd /Users/me/Developer/my-app
    export PATH="/Applications/Xcode 7.0 Beta/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode 7.0 Beta/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    export XCODE_DEVELOPER_USR_PATH="/Applications/Xcode 7.0 Beta/Xcode-beta.app/Contents/Developer/usr/bin/.."
    /Applications/Xcode\ 7.0\ Beta/Xcode-beta.app/Contents/Developer/usr/bin/ibtool
    --errors
    --warnings
    --notices
    --module MyApp
    --output-partial-info-plist /Users/me/Library/Developer/Xcode/DerivedData/MyApp-bwakexzthboxucdaodqtbbbwgsaz/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Main-SBPartialInfo.plist
    --auto-activate-custom-fonts
    --target-device iphone
    --minimum-deployment-target 8.0
    --output-format human-readable-text
    --compilation-directory /Users/me/Library/Developer/Xcode/DerivedData/MyApp-bwakexzthboxucdaodqtbbbwgsaz/Build/Products/Debug-iphonesimulator/MyApp.app
    /Users/me/Developer/my-app/MyApp/Resources/Storyboards/Main.storyboard

2015-09-17 15:44:06.451 Interface Builder Cocoa Touch Tool[1216:88742] Error creating notification handler for simulator graphics quality override: 1000000

与Xcode 7.1 Beta中不成功的版本相比:

CompileStoryboard MyApp/Resources/Storyboards/Main.storyboard
    cd /Users/me/Developer/my-app
    export PATH="/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    export XCODE_DEVELOPER_USR_PATH=/Applications/Xcode-beta.app/Contents/Developer/usr/bin/..
    /Applications/Xcode-beta.app/Contents/Developer/usr/bin/ibtool
    --errors
    --warnings
    --notices
    --module MyApp
    --output-partial-info-plist /Users/me/Library/Developer/Xcode/DerivedData/MyApp-bwakexzthboxucdaodqtbbbwgsaz/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Main-SBPartialInfo.plist
    --auto-activate-custom-fonts
    --target-device iphone
    --minimum-deployment-target 8.0
    --output-format human-readable-text
    --compilation-directory
    /Users/me/Developer/my-app/MyApp/Resources/Storyboards/Main.storyboard

/* com.apple.ibtool.errors */
: error: Not enough arguments provided; where is the input document to operate on?

显示我好像缺少--compilation-directory参数的一个值,因此正在使用故事板的路径作为编译的目标文件。

是否可以检查/修改此编译步骤,还是这可能是Xcode中的一个错误?


你尝试过删除Xcode-> DerivedData文件夹吗? - Kateryna Gridina
抱歉,那并没有帮助。 - fractious
$ sudo killall -9 ibtoold同时请确认您的.storyboard文件是否在“Bundle Resources”中,并且所有目标都已选择。 - Kateryna Gridina
问题已发布到Apple开发者论坛。一位苹果员工回复说这很可能是Xcode的一个bug。已向苹果提交了错误报告。 - fractious
2个回答

23

感谢苹果技术支持人员的帮助,解决方案是将Main.storyboard文件从编译源代码构建阶段移动到复制包资源阶段。


4
我的故事板在“复制束资源”中,但它仍然失败了 :( - the_critic
@the_critic 产品 --> 清理并重新构建对我有帮助。 - Mithil Jadhav
谢谢,我也遇到同样的问题。它对我很有帮助! - marchiore
谢谢,这对我很有帮助! - Will Evers

0

为“为模拟器图形质量覆盖创建通知处理程序错误”添加另一个潜在答案。当我在Xcode构建阶段中添加了一个运行脚本,然后将脚本拖到sop上以使其在预构建时运行时,我遇到了这个错误。不知道为什么会出现这种情况,但当我将运行脚本窗口拖回底部时,问题就解决了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接