tde*_*gan 8 xcode localization objective-c ios xliff
当我导入项目的本地化时,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)
Run Code Online (Sandbox Code Playgroud)
Dan*_*ney 10
这个问题杀了我.该工具可以/应该工作,让你的生活更轻松,但事实并非如此.我在夏天遇到了这个问题,并在第一个项目符号中使用了info.plist提示进行修复,但我最近更新了项目,我又回到了xliff例外地狱.从好的方面来说,我目前的崩溃似乎是在它完成工作之后发生的,所以我能够继续工作.
有很多事情可能会出错并导致导入崩溃.通常Xcode只是闪烁不存在.如果你想在崩溃前看到一些信息,请使用xcodebuild:
xcodebuild -verbose -importLocalizations -localizationPath "lang.xliff" -project ./myProject.xcodeproj
Run Code Online (Sandbox Code Playgroud)
本地化时,请勿直接向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
小智 0
您的字符串之一包含双引号。尝试在未翻译的 XLIFF 文件中将它们替换为",然后查看是否可以重新导入该文件。这只是一个大胆的猜测,我手头没有 XCode 8.1 来尝试自己重现这一点,但这是我在您的 XLIFF 文件中注意到的唯一看起来不可靠的东西。