Info.plist 설명 도구
Info.plist나 plutil -p가 출력한 내용을 붙여 넣으세요. 바로 이 페이지에서 읽을 뿐이고, 어디에도 전송되지 않아요.
예시로 해 보기:
하는 일
모든 Mac 앱 안의 Contents에는 Info.plist가 있어요. 앱 이름, 번들 ID, 버전, 실행 가능한 가장 오래된 macOS, 카테고리, Dock 아이콘 유무, 앱이 카메라, 마이크, 다른 앱 제어를 요청할 때 macOS가 보여주는 메시지를 macOS에 알려 주는 작은 설정 파일이에요. 이 도구는 붙여 넣은 파일을 읽고 각 키가 하는 일을 쉬운 말로 알려줘요. 앱, 업데이트, 심사를 막을 키를 먼저, 한 번 더 볼 만한 키를 그다음, 평범한 키를 마지막에 보여줘요.
실행할 명령
plutil -p YourApp.app/Contents/Info.plist plutil -lint YourApp.app/Contents/Info.plist
첫 번째는 바이너리로 저장되어 있어도 여기에 붙여 넣을 수 있는 형태로 파일을 출력해요. 두 번째는 파일이 올바른지 확인해요. Xcode 프로젝트에서는 파일에 $(MARKETING_VERSION) 같은 값이 들어 있는 경우가 많은데, Xcode가 빌드할 때 채워 줘요. 실제 값을 보려면 빌드된 앱 안에 있는 사본을 확인하세요.
결과별 의미
| 표시 | 의미 |
|---|---|
| 수정 | 앱, 업데이트, App Review를 막을 수 있는 방식으로 키가 없거나 비어 있어요. 예를 들어 빌드 번호가 없거나 권한 메시지가 비어 있는 경우예요. |
| 모양 | 동작은 하지만 App Review에서 질문을 받거나 사람들을 헷갈리게 할 수 있어요. 애매한 권한 메시지나 모든 곳에서 허용된 일반 http 같은 경우예요. |
| OK | Apple 문서에 설명된 대로 설정되어 있어요. |
| 참고 | 알아 두면 좋은 것, 예를 들어 앱을 빌드할 때 Xcode가 추가한 내용이에요. |
출처: Apple Developer, Information Property List, Protected resources, LSApplicationCategoryType, NSAppTransportSecurity, Sparkle 문서. 모두 2026년 11월 9일에 읽었어요.
작동 방식
페이지 안에서 실행되는 몇 가지 단순한 텍스트 규칙이에요. Info.plist의 XML이나 plutil -p가 출력하는 최상위 내용을 읽어요. 자주 쓰는 키 80개와 권한 메시지를 알고 있고, 그 밖의 것은 추측하지 않고 목록에 없다고 표시해요. 앱이 실제로 카메라나 마이크를 쓰는지, 앱이 하는 일에 필요한 권한 메시지가 빠졌는지는 알 수 없어요. 메시지 없이 권한을 요청하는 앱은 macOS가 멈추므로 기능마다 한 번씩 테스트해 보세요. 붙여 넣은 내용은 저장도 전송도 되지 않아요.
질문
Mac에서 Info.plist란 무엇인가요?
모든 앱 안에 있는 설정 파일로, 위치는 Contents/Info.plist예요. 앱 이름, 번들 ID, 버전, 최소 macOS, 카테고리, 앱이 권한을 요청할 때 macOS가 보여주는 메시지가 들어 있어요.
앱의 Info.plist는 어떻게 읽나요?
터미널에서 plutil -p 다음에 Contents/Info.plist 경로를 입력하세요. 바이너리로 저장되어 있어도 일반 텍스트로 출력돼요.
CFBundleVersion과 CFBundleShortVersionString은 무엇이 다른가요?
CFBundleShortVersionString은 사람들이 보는 버전이에요. CFBundleVersion은 macOS, Mac App Store, Sparkle가 어느 쪽이 더 새 것인지 판단할 때 비교하는 빌드 번호예요. 예: 2.1
Mac 앱이 카메라를 요청할 때 왜 종료되나요?
앱이 Info.plist에 해당하는 사용 목적 설명 없이 카메라, 마이크 등 개인 데이터를 요청하면 macOS가 앱을 멈춰요. 명확한 이유를 담아 NSCameraUsageDescription을 추가하세요.
붙여넣은 내용이 어딘가로 전송되나요?
아니요. 텍스트는 이 페이지에서 읽을 뿐이고, 아무것도 전송되거나 저장되지 않아요.