2011-10-30 5 views
15

마지막으로 ... 몇 년 동안 시청 한 후 1 개월 동안 참여한 후, 여러분에게 내 자신의 질문을 할 기회가 있습니다.Info.plist 파일에 빌드 날짜 및 시간을 추가하는 XCode를 얻는 방법

내 상사가 나 (또는 ​​어떤 프로세스)가 빌드 번호를 늘리는 것을 신뢰하지 않으며, 빌드 날짜가 & 시간 인 앱에 구워 지길 원합니다. 이것을 보통 Info.plist 파일에 넣고 싶습니다. 나는 계획 편집기에 가서 빌드 단계의 "후 작업"섹션 아래의 스크립트를 추가, 거기에 응답에 따라

Build information in iOS Application (date/time app was built)

과 :

나는이 관련 질문을 발견 : 엑스 코드에서

infoplist="$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH" 
builddate=`date` 
if [[ -n "$builddate" ]]; then 
    defaults write "${infoplist%.plist}" BuildDate "${builddate}" 
fi 

, 내 계획 편집기 창은 다음과 같습니다

아쉽게도 BuildDate는 Info.plist에 기록되지 않습니다.

"$ {builddate}"를 "$ builddate"로 변경하면 작동하지 않습니다. 이 줄을 스크립트에 추가했습니다.

echo "build date is $builddate" > /tmp/result.txt 

날짜가 쓰여진 파일에 완벽하게 표시되었습니다. 위의 스크립트에서 Info.plist 파일에 문자열을 쓰는 것은 충분히 좋고 성가신만큼 잘 작동합니다.

Info.plist 파일에 날짜를 추가하는 방법을 요약하면 어떻게됩니까?

+0

내가 사용하는 문제가 발생하지 않았다 ... 편집으로 제출했지만 거부되었다 나는 아직 그의 대답에 코멘트를 게시 할 수있는 충분한 명성을하지 마십시오 스크립트를 사후 조치로 사용합니다. 단, 서명이 무효화되는 경우는 예외입니다. 작업 후 작업 대신 빌드 단계로 잘 작동하며 작업 영역을 공유할지 여부와 관계없이 작업하는 이점이 있습니다. 또한 사전 조치는 빌드 타임 덮어 쓰기를 유발하는 실제 info.plist에 대한 변경으로 인해 전격적 인 조치가 취해지기 때문에 사전 조치보다 효과적입니다. – smparkes

답변

4

Michael의 답변에있는 코드가 잘못되었거나 더 이상 최신이 아닙니다. 아래 버전은 집합 구문에서 오류를 수정하고 공백이있는 빌드 경로를 지원합니다.

infoplist="$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH" 
builddate=`date` 
if [[ -n "$builddate" ]]; then 
    # if BuildDateString doesn't exist, add it 
    /usr/libexec/PlistBuddy -c "Add :BuildDateString string $builddate" "${infoplist}" 
    # and if BuildDateString already existed, update it 
    /usr/libexec/PlistBuddy -c "Set :BuildDateString $builddate" "${infoplist}" 
fi 

참고 :이 변경

2

정확한 코드를 사용하고 있지만 사후 조치 대신 사전 조치가 적용되며 빌드 된 제품의 info.plist가 빌드 날짜를 올바르게보고합니다. 다시 말하면, 을 info.plist에 맞게 사용자 정의해야합니다.은 기본 제공 제품으로 복사하기 때문에 합리적인 것 같습니다.

그런데 제안에 감사 드리며, 그것은 매우 영리하고 유용합니다.

+0

사전 작업에서이 작업을 수행 한 다음 실제로 info.plist를 업데이트하면 변경 사항이 업데이트에 적용됩니다. info.plist가 많이 업데이트되지 않기 때문에별로 중요하지 않습니다. – smparkes

5

아아, 나는 (내가 이미 낭비했던 2 시간 위에) 또 다른 30 분 동안 내 자신의 게시하기 전에 질문에 대한 답변에서 봤어야 :

Insert Subversion revision number in Xcode

이를 포스트 액션 스크립트는 트릭을 수행하고 나를 위해 작동 : 당신이 볼 수 있듯이

infoplist="$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH" 
builddate=`date` 
if [[ -n "$builddate" ]]; then 
    # if BuildDateString doesn't exist, add it 
    /usr/libexec/PlistBuddy -c "Add :BuildDateString string $builddate" "${infoplist}" 
    # and if BuildDateString already existed, update it 
    /usr/libexec/PlistBuddy -c "Set :BuildDateString $builddate" "${infoplist}" 
fi 

는, 거기 해킹의 비트를하고있어 (존재하지 않는 경우를 추가, 바로 나중에 그것을 설정).

위의 "기본 쓰기"방법 ("PlistBuddy"보다 더 잘 지원 될 것 같음)을 사용하여 솔루션을 제안 할 수있는 사람은 누구나 알게되어 기쁩니다. 물론 받아 들일 것입니다. 그 우수한 대답도).

관련 문제