2010-05-14 2 views
4

info.plist 파일을 사전 처리하는 방법이 있지만 내 Settings.bundle 내부에서 문자열 파일을 처리하는 것과 비슷한 방법이 있습니까?Xcode 빌드 중 문자열 전처리 과정

내 문제 : 저는 iPhone 앱이있어서 사용자가 현재 설치된 버전에 대해 알고 싶습니다. 앱 설정에 표시하여이 작업을 수행합니다. 이제는 내 info.plist에서 번들 버전을 변경할 때마다 Root.strings의 버전을 Settings.bundle으로 변경해야합니다. 그것을 업데이트하는 스크립트 액션을 실행할 수는 있지만 더 재미있는 일을 할 수 있기 때문에 전 처리기를 사용하는 것이 좋을 것입니다.

감사합니다. 보기가 번들을 요청하고 직접 Info.plist 파일을 쿼리하고 CFBundleVersion를 추출하도록

답변

-1

그것을 확인 (또는 적합한 키는 추출 할) 버전은 .strings 파일에 저장 될 필요가해서는 안됩니다. 다음으로해야 할 일은 디스플레이 준비를위한 포맷 문자열을 갖는 것입니다. 현지화에 신경 쓰는 한 가지 유용한 점은 대신 .strings에 현지화 된 문자열을 사용하는 것입니다. "%@<CFBundleVersion format string>" = "Version: %@"; 다음으로 현지화가 모든 언어로 된 경우 빠른 시각적 표시가 나타납니다.

MyInfoView *infoView = /*...*/; 
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; 
infoView.versionLabel.text = [NSString stringWithFormat:NSLocalizedString(@"%@<CFBundleVersion format string>",nil), version]; 
+0

문자열이 Settings.app에 나타나면 버전은 문자열 파일에 있어야합니다. 내 질문을 다시 읽으십시오. 덕분에 – stigi

3

전 처리기 XCode는 모든 문자열 파일에서 실행되며 copystrings입니다. /Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources에 있습니다. 이것은 간단한 루비 스크립트이지만, 어떤 전처리/매크로 확장도 지원하지 않습니다.

스크립트를 확장 할 수도 있지만 이미 제안한 것처럼 실행 스크립트 빌드 단계에서 실행중인 다른 스크립트로 쉽게 이동할 수 있습니다.

+0

. copystrings에 대해 몰랐습니다. 그 +1 – stigi