2016-12-27 1 views
4

프로젝트의 현지화를 가져 오면 Xcode (8.1)가 충돌합니다. 또한 내 보낸 다음 수정없이 동일한 xliff 파일을 가져올 때 충돌이 발생합니다. http://ge.tt/7J5UY3i2 여기Xcode 8 현지화 가져 오기 오류

전체 충돌 보고서 http://pastebin.com/JsJFeCqB입니다 : 여기

는 XLIFF 파일입니다. 이것에 대한 팁이나 해결 방법은 무엇입니까?

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) 
+0

임이 동일한 문제가 있습니다. 아직 아무것도 찾았 니? –

답변

0

문자열 중 하나에 큰 따옴표가 들어 있습니다. 번역되지 않은 XLIFF 파일에서 "으로 바꾸어보고 해당 파일을 다시 가져올 수 있는지 확인하십시오. 이것은 자연스러운 추측 일 뿐이므로 자신에게이 Xcode를 시도하고 재현하는 데 Xcode 8.1이 없지만, 이것이 XLIFF 파일에서 눈에 띄지 않는 것으로 나타났습니다.

+0

불행히도 작동하지 않았 음 :/ – tdeegan

+0

죄송합니다 ... 다음 번에 추측 한 사실 : 번역 된 XLIFF는 XLIFF 1.2 엄격한 스키마에 대해 유효성을 검사하지 않습니다.일부 ''요소는 ''앞에옵니다. 나는 이것이 번역되지 않은 파일의 경우는 아니라고 생각한다. 그리고'build-num' 속성은''요소에서 허용되지 않습니다. 또한 큰 따옴표 앞에 백 슬래시를 붙이면됩니다. 이상하게 보일 수 있지만 일부 사람들에게는 일반 XML이 복잡하지 않아서 .properties 구문과 혼합됩니다. – Jenszcz

2

이 문제로 저를 죽입니다. 이 도구는 작동 할 수 있어야하고, 당신의 삶을 훨씬 쉽게 만들어 줄 수 있어야합니다. 나는 여름 동안이 문제가 있었고 첫 번째 글 머리표에서 info.plist 팁으로 해결했지만 최근에 프로젝트를 업데이트했고 xliff 예외 지옥에 다시 왔습니다. 밝은면에서, 현재의 추락은 일을 끝낸 후에 일어나는 것 같아서 일을 계속할 수 있습니다.

잘못하여 가져 오기가 중단 될 수있는 여러 가지 사항이 있습니다. 일반적으로 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 파일을 가질 수 있습니다. 그것들을 제거하십시오.

  • en.lproj 대신 base.lproj 만 사용하면 프로젝트에서 en.lproj 파일을 수동으로 제거 할 수 있습니다.

  • XLIFF 파일의 형식을 잘 지정해야하지만 크래시가 발생하지는 않습니다.

  • Xcode 7에서 특정 크래시가 수정되었으므로 최신 버전이 아닌지 확인하십시오.

나는 xliff와 함께 살기위한 파이썬 스크립트가 있습니다. 스크립트의 일부에서 업데이트 된 소스 경로가 필요하지만 장기적으로도 도움이 될 수 있습니다. https://github.com/danloughney/xliffHell

+2

첫 번째 글 머리 점이 나를 위해 잘 작동했습니다. – laynemoseley

+0

내 프로젝트 파일이나 작업 공간에 문제가 있어야합니다. XLIFF를 가져올 때 충돌이 발생하지 않는 새로운 앱이 있습니다. 이 충돌이 발생하면 프로젝트를 완전히 재현하는 것이 도움이 될 것입니다. –

+0

여전히 Xcode 9 베타에서 충돌이 발생합니다. –