2010-12-01 2 views

답변

40

defaults 명령은 단지 그것을 경로 뺀 .plist 확장을주고, 어떤 PLIST 파일에 읽기/쓰기 할 수 있습니다

$ defaults read /Applications/Preview.app/Contents/Info CFBundleIdentifier 

com.apple.Preview 

이 응용 프로그램 번들의 Info.plist 파일에서 직접 CFBundleIdentifier 값을 가져옵니다.

기본값은 추가 단계없이 바이너리 plists에서도 작동합니다.

+3

이것은 PlistBuddy가 더 이상 기본으로 설치되지 않았기 때문에 더 나은 대답입니다 (특히. 그것을 선택해야합니다. – Olie

+13

기본값은 현재 상대 경로가 아닌 전체 경로를 원한다는 것을 유의하십시오. 현재 읽고있는 plist 파일이있는 디렉토리에 있지 않아도됩니다. (이상한!) – Olie

+6

그래서, 당신이 그것을 사용할 수 있습니다 : defaults write $ PWD/SomeMyDirectory/Info.plist CFBundleIdentifier "com.apple.Preview" – iVader

4

빌드 된 제품에서 바로 파일을 읽을 수 있습니다. 그러나 편집기에서 info.plist 파일 자체를 보면 쉘 변수 자체를 볼 수 있습니다. 예 :

com.yourcompany.${PRODUCT_NAME:rfc1034identifier} 

당신은 엑스 코드가 실행되는 쉘 스크립트에서 ${PRODUCT_NAME:rfc1034identifier}를 호출 할 수 있습니다 그것은 채워야 : 번들 ID는 다음과 같은 쉘 명령을 가지고 있습니다.

+0

테스트를 해보지는 않았지만 좋은 소리입니다. 단점은 번들 ID를 얻지 못하지만 마지막 부분 만 가져온다는 것입니다. 따라서 "com.mycompanyname"부분을 어딘가에 하드 코딩해야합니다 ... – Dimitris

3

Mac에 PlistBuddy라는 명령 행 프로그램이 설치되어 plist에서 값을 읽고 쓸 수 있습니다. 자세한 정보를 얻으려면 터미널에 'man PlistBuddy'를 입력하십시오. PlistBuddy,이 같은 VAR하는 문자열을 할당 할 수 있습니다 애플 응용 프로그램을 사용

+0

PlistBuddy를 시도하고 많이 사용했습니다. 문제는 PlistBuddy가 번들 ID를 출력 할 수는 있지만 반환하지 않는다는 것입니다 (0 또는 1 만 반환). 그래서 놈의 놈이되어서 변수에 할당하는 데 어려움을 겪었습니다. 그러나 내가 어떻게 그 일을 할 수 있었는지는 알았다. 나는 지금 내 대답을 게시 할 것이다. – Dimitris

33

:

#!/bin/sh 
BUNDLE_ID=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${BUILD_ROOT}/${INFOPLIST_PATH}") 
당신이 "스크립트 실행"에서이 스크립트를 실행하는 경우 BUILD_ROOT 및 INFOPLIST_PATH 변수 엑스 코드에 의해 설정됩니다

빌드 단계.

+1

PlistBuddy가 항상 시스템에 존재하는 것은 아닙니다. 스크립트를 배포하는 경우 다른 대답이 지적한대로 기본값 사용을 고려할 수 있습니다. –