当我为我的项目导入本地化时,Xcode (8.1) 崩溃了。 当我在不修改的情况下导出然后导入相同的 xliff 文件时,它也会崩溃。
这是 xliff 文件:http://ge.tt/7J5UY3i2
这是完整的崩溃报告 http://pastebin.com/JsJFeCqB .对此有任何提示或解决方法吗?
Application Specific Information:
ProductBuildVersion: 8B62
UNCAUGHT EXCEPTION (NSInvalidArgumentException): -[Xcode3VariantGroup addToTargetDefaultResourcesBuildPhase:]: unrecognized selector sent to instance 0x7fe69615cba0
UserInfo: (null)
Hints: None
Backtrace:
0 __exceptionPreprocess (in CoreFoundation)
1 DVTFailureHintExceptionPreprocessor (in DVTFoundation)
2 objc_exception_throw (in libobjc.A.dylib)
3 -[NSObject(NSObject) doesNotRecognizeSelector:] (in CoreFoundation)
4 ___forwarding___ (in CoreFoundation)
5 _CF_forwarding_prep_0 (in CoreFoundation)
6 __81+[IDELocalizationWork fileReferenceStreamForName:directoryPath:superitem:target:]_block_invoke (in IDEFoundation)
7 __33-[IDEStream(IDEStreamMonad) map:]_block_invoke (in IDEFoundation)
8 __24-[_IDEStreamMap onNext:]_block_invoke_4 (in IDEFoundation)
9 -[_DVTTimeSlicedMainThreadOrderedUniquingWorkQueue _processWorkItemsWithDeadline:] (in DVTFoundation)
10 -[DVTTimeSlicedMainThreadWorkQueue _processWithDeadline:] (in DVTFoundation)
11 -[_DVTTimeSlicedMainThreadActiveWorkQueues _processWorkQueuesOnDeadline] (in DVTFoundation)
12 __NSFireDelayedPerform (in Foundation)
13 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ (in CoreFoundation)
14 __CFRunLoopDoTimer (in CoreFoundation)
15 __CFRunLoopDoTimers (in CoreFoundation)
16 __CFRunLoopRun (in CoreFoundation)
17 CFRunLoopRunSpecific (in CoreFoundation)
18 RunCurrentEventLoopInMode (in HIToolbox)
19 ReceiveNextEventCommon (in HIToolbox)
20 _BlockUntilNextEventMatchingListInModeWithFilter (in HIToolbox)
21 _DPSNextEvent (in AppKit)
22 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] (in AppKit)
23 -[DVTApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (in DVTKit)
24 -[NSApplication run] (in AppKit)
25 NSApplicationMain (in AppKit)
26 start (in libdyld.dylib)
最佳答案
这个问题让我很生气。该工具可以/应该工作并让您的生活变得如此轻松,但事实并非如此。我整个夏天都遇到了这个问题,并在第一个项目符号中使用 info.plist 提示修复了它,但我最近更新了项目,我又回到了 xliff 异常 hell 。从好的方面来说,我目前的崩溃似乎是在它完成工作之后发生的,所以我能够继续工作。
有很多事情可能出错并导致导入崩溃。通常 Xcode 只是一眨眼就消失了。如果您想在崩溃前查看一些信息,请使用 xcodebuild:
xcodebuild -verbose -importLocalizations -localizationPath "lang.xliff" -project ./myProject.xcodeproj
本地化时,不要将语言直接添加到 info.plist。而是将 InfoPlist.Strings 文件添加到您的项目并向其中添加语言。您可能需要在每个 lang.lproj 文件夹中手动创建文件。确保在除 base.lproj 之外的任何 lang.lproj 文件夹中没有 info.plist 文件。
本地化 Settings.bundle 时,创建您的 lang.lproj 文件夹。创建 Root.strings 文件时,大小写很重要。它必须是“Root.strings”,否则它可能适用于 iOS,但不适用于 iOS 模拟器。
环顾您的项目结构。使用崩溃工具后,您最终会在错误的位置找到一堆文件。您可以在项目的根组中有一个 Localized.Strings 文件。删除那些。
仅使用 base.lproj 而不是 en.lproj,因此如果您在项目中找到 en.lproj 文件,请手动删除它们。
XLIFF 文件确实需要正确格式化,但我认为这不会导致崩溃。
不适合您,但据说 Xcode 7 中修复了一个特定的崩溃,因此请确保您使用的是最新版本,至少可以避免该崩溃。
我有一些用于使用 xliff 的 python 脚本。他们需要在一些脚本中更新源路径,但从长远来看他们可能会有所帮助:https://github.com/danloughney/xliffHell
关于ios - Xcode 8 本地化导入崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41339751/
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上