Xcode 버전 (CFBundleShortVersionString)과 빌드 (CFBundleVersion)의 차이점


94

앱 타겟 요약

Xcode 4에서는 대상 요약에 다음이 표시됩니다.

"버전"입력 CFBundleShortVersionString은 info.plist 파일에 해당하고 "빌드"입력은에 해당합니다 CFBundleVersion.

이 둘의 차이점은 무엇입니까? 나는 인터넷에서 많은 사람들이 두 가지 모두에 대해 동일한 가치를 부여하고 싶어하는 것을 봅니다. 그리고 내 의심은 그것이 이전 버전과의 호환성에 대한 것입니다.

두 가지 질문이 있습니다.

1) 처음부터 시작했다면 앱 버전을 관리하는 가장 좋은 방법은 무엇입니까?

2) 내 앱의 모든 이전 릴리스에서는 CFBundleVersion. 업그레이드 프로세스를 엉망으로 만들지 않으 CFBundleVersion려면 이전과 동일한 방식으로 계속 증가해야 합니까? 아니면 "올바른 방식"으로 전환 할 수 있습니까?


3
이것은 stackoverflow.com/questions/6851660/version-vs-build-in-xcode-4 의 복제본 이지만 아마도이 버전이 더 잘 설명되어 있으며 스크린 샷이 있습니다.
Daniel Dickison 2011

요약에서 빌드 필드를 표시하기 위해 수행해야하는 작업이 있습니까? 버전 만 표시되고 빌드 필드는 표시되지 않습니다.
Kenny Wyland 2011 년

답변:


68

Apple 문서 "정보 속성 목록 키 참조"CFBundleShortVersionString릴리스 버전 을 나타내며 릴리스 여부에 CFBundleVersion관계없이 모든 빌드를 나타냅니다. 또한 CFBundleShortVersionString"마침표로 구분 된 세 개의 정수로 구성된 문자열"이라고 말하고 있기 때문에 원하는 이유를 모르겠지만 현지화 할 수 있습니다. 릴리스 빌드의 경우 두 숫자를 동일하게 만드는 것이 합리적입니다. 개발 빌드의 경우 CFBundleVersion다른 점과 정수를 추가 할 수 있습니다.


그러나 현재 1.3.1을 내으로 사용 CFBundleVersion하고 아무것도 사용 하지 않고 내부 빌드를 나타내는 CFBundleShortVersionString데 사용 CFBundleVersion으로 전환하려면 최소한 1.3.1보다 큰 정수로 시작 해야 합니다. 아니면 그 스위치를 만드는 것이 문제를 요구합니까?
Philip Walton 2011 년

버전 ( CFBundleShortVersionString)은 Apple에 제출하는 데 중요한 유일한 것입니다. 빌드 ( CFBundleVersion)는 개발시 원하는대로 사용하거나 앱에 표시하기위한 것입니다. 8 진수 (밑수 -8)를 사용하고 원하는 경우 12 씩 역순으로 반복합니다.
nekno

16
nekno : 사실 CFBundleVersion은 Apple에게 중요한 것입니다. 앱을 제출할 때 Apple이 제공하는 다음 오류 메시지를 확인하십시오. "업로드 한 바이너리가 유효하지 않습니다. Info.plist 파일의 키 CFBundleVersion에는 이전에 업로드 한 버전보다 높은 버전이 포함되어야합니다."
malhal

10
일부 국가에서는 동양 아랍어 (٠, ١, ٢, ٣, ٤, ٥, ٦, ٧, ٨, ٩) 또는 히브리어와 같이 서구 세계에서 사용하는 다른 숫자를 사용합니다. (א, ב, ג, ד, ה, ו, ז, ח, ט)-그리고이 둘도 오른쪽에서 왼쪽으로 쓰여집니다. 더 많은 다른 숫자 체계가 있습니다 ( en.wikipedia.org/wiki/Category:Numerals 참조 ). 그래서 제 생각에는 이것이 Apple이 "현지화 가능한"버전 번호라는 의미입니다.
Ruslan Ulanov 2014

그건 그렇고, 구두 점이있는 세 자리 숫자는 필요하지 않습니다. 201606070620배송 iOS 7-8-9 앱에서 두 값 모두에 대해 대신 날짜-시간 값을 사용하고 있습니다.
바질 우르 큐

3

CFBundleShortVersionString을 지역화하려는 이유에 대한 JWWalker의 질문에는 소수점 구분 기호가 있습니다. 예를 들어 소수점 구분 기호가 실제로 쉼표 인 로케일에서 버전 "1.5"는 "1,5"가됩니다.


30
IMO는 버전 번호를 현지화 할 필요가 없습니다. 소수점 구분 기호가 쉼표 (독일) 인 지역에 살고 있으며 점으로 구분 된 버전 번호에 익숙합니다. 사실, 쉼표가있는 버전 번호를 본 적이 있다는 것을 기억할 수 없습니다.
Christian Specht 2011 년

2
나는 또한 쉼표를 소수점 구분 기호로 사용하는 지역에 살고 있지만 1,3,1은 상당히 이상한 값이지만 1.3.1은 훨씬 더 나은 것 같습니다.
Lucien

1
지역마다 다른 버전의 앱을 사용할 수 있다는 의미라고 생각합니다. 1.2.1> en.lproj 1.2.2> fr.lproj 파일을 현지화 할 때 전체 plist가 복사되므로 두 버전 번호가 모두 복사되어 둘 다 '현지화 될 수 있습니다'
brian.clear

1

빠른 수정:

CFBundleShortVersionStringplist 파일에을 추가하고 버전을 편집하십시오.

  1. 당신의 InfoPlist.strings
  2. 강조 표시하고 아래 코드를에 붙여 넣습니다 (소스 코드 모드라고 가정).

{ "CFBundleShortVersionString"= "1.1";}

  1. 1.1을 새 빌드로 변경하십시오.
  2. 더 이상 오류없이 빌드하고 제출하세요!

여기에 이미지 설명 입력


1

바이너리 업로드에 대한 Apple 문서를 참조하십시오.

버전 및 빌드 번호 매기기 : iTunes Connect는 바이너리에서 시험판 버전 번호와 빌드 번호를 추출합니다. 시험판 버전 번호는 Info.plist의 Xcode 버전 번호 또는 "Bundle version string, short"키입니다. 빌드 번호는 Xcode 빌드 번호 또는 Info.plist의 "번들 버전"키입니다. 시험판 버전 번호와 빌드 번호는 빌드보기에 설명 된대로 시험판 탭에 표시됩니다.

앱용 바이너리 업로드

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.