[ios] App Store 출시시 반드시 증가해야하는 iOS 앱 버전 / 빌드 번호는 무엇입니까?

iOS 앱의 버전 / 빌드 필드는 다음과 같습니다.

  • “Version” CFBundleShortVersionString (문자열-iOS, OS X)은 앱의 릴리스 된 반복을 식별하는 번들의 릴리스 버전 번호를 지정합니다. 릴리스 버전 번호는 마침표로 구분 된 세 개의 정수로 구성된 문자열입니다.

  • “Build” CFBundleVersion (문자열-iOS, OS X)은 번들의 반복 (출시 또는 미출시)을 식별하는 번들의 빌드 버전 번호를 지정합니다. 빌드 버전 번호는 첫 번째 정수가 0보다 큰 음수가 아닌 세 개의 마침표로 구분 된 정수로 구성된 문자열이어야합니다. 문자열에는 숫자 (0-9) 및 마침표 (.) 문자 만 포함되어야합니다. 선행 0은 각 정수에서 잘리고 무시됩니다 (즉, 1.02.3은 1.2.3과 동일 함). 이 키는 지역화 할 수 없습니다.

  • “iTunes Connect 버전 번호” : iTunes Connect 에서 새 버전의 앱을 생성 할 때 지정하는 버전 번호입니다.

내 질문은 :

새로운 버전의 앱이 iTunes Connect에 업로드되거나 App Store에 출시 될 때 어떤 버전 / 빌드 번호 를 증가시켜야 합니까?

앱 업데이트간에 “버전” CFBundleShortVersionString또는 “빌드” CFBundleVersion가 동일하게 유지 될 수 있습니까?

Apple 소스에 대한 추가 포인트 또는 잘못된 버전 / 빌드 번호를 업로드 할 때 iTunesConnect가 표시하는 정확한 오류 메시지.


Android / Google Play 참고 :

이 질문에 메시지를 표시 논의는 구글의 안드로이드 응용 프로그램의 공개 “버전”스토어는 않는 플레이한다는 것입니다 하지 증가 될 필요에 어떠한 방식으로 검증. 는 android:versionName, 릴리스간에 동일하게 유지 업그레이드, 다운 그레이드, 또는 임의의 문자열이 아닌 나타납니다 유효한 “버전 번호”가 될 것을 무언가가 될 수 있습니다.

android:versionName — 사용자에게 표시되어야하는 애플리케이션 코드의 릴리스 버전을 나타내는 문자열 값입니다.

값은 문자열이므로 애플리케이션 버전을 <major>.<minor>.<point>문자열 로 설명 하거나 다른 유형 의 절대 또는 상대 버전 식별자 로 설명 할 수 있습니다 .

Android에서 versionName과 versionNumber의 차이점

는 반면 android:versionCode증분-에 출시 정수로 적용됩니다.


Apple 문서

새로 승인 된 답변 에서 언급했듯이 Apple은 최근 버전 및 빌드 번호 체계를 자세히 설명하는 기술 노트를 게시했습니다.

Apple 기술 노트 TN2420-버전 번호 및 빌드 번호



답변

Apple 기술 노트 TN2420, 버전 번호 및 빌드 번호

요약:

  • 쌍 ( Version, Build number)은 고유해야합니다.
    • 시퀀스는 유효합니다 : (1.0.1, 12)-> (1.0.1, 13)-> (1.0.2, 13)-> (1.0.2, 14) …
  • Version( CFBundleShortVersionString )은 오름차순이어야합니다.
  • Build number( CFBundleVersion )은 오름차순이어야합니다.

버전 번호 및 빌드 번호 체크리스트

다음은 App Store에 새 빌드를 제출할 때 확인할 수있는 몇 가지 사항입니다. 버전 번호와 빌드 번호를 올바르게 설정했는지 확인하면 앱이 잘못 구성되어 앱이 자동으로 거부되는 것을 방지 할 수 있습니다.

  1. 앱의 새 버전마다 새 버전 번호를 만들어야합니다. 이 번호는 마지막으로 사용한 버전 번호보다 커야합니다. 앱의 특정 릴리스에 대해 많은 빌드를 제공 할 수 있지만 앱의 새 릴리스마다 하나의 새 버전 번호 만 사용하면됩니다.
  2. 버전 번호는 재사용 할 수 없습니다.
  3. 제출하는 모든 새 빌드에 대해 값이 마지막으로 사용한 빌드 번호보다 큰 새 빌드 번호를 발명해야합니다 (동일한 버전에 대해).
  4. 다른 릴리스 트레인에서 빌드 번호를 재사용 할 수 있지만 동일한 릴리스 트레인 내에서 빌드 번호를 재사용 할 수는 없습니다. macOS 앱의 경우 릴리스 트레인에서 빌드 번호를 재사용 할 수 없습니다.

체크리스트에 따르면 다음 (Version, Build Number)순서도 유효합니다.

  • 사례 : Build Number다른 릴리스 트레인에서 재사용 . (참고 : 아닙니다 맥 OS 응용 프로그램)

    (1.0.0, 1)-> (1.0.0, 2)-> …-> (1.0.0, 11)-> ( 1.0.1 , 1 )-> (1.0.1, 2)


답변

CFBundleShortVersionString당신이 아이튠즈에 연결을 줄 버전 번호와 일치해야합니다. 사용자가 App Store에서 앱을 볼 때 나타나는 버전 번호이기도합니다.

버전 번호는 스토어에 표시되며 해당 버전은 나중에 iTunes Connect에 입력 한 버전 번호와 일치해야합니다.

출처

CFBundleVersion앱 스토어에 표시되지 않지만 앱이 업데이트되면 결정하기 위해 아이튠즈에 의해 사용된다.

“버전 번호 및 빌드 문자열 설정”에 설명 된대로 빌드 문자열을 업데이트하면 iTunes는 빌드 문자열이 변경되었음을 인식하고 새 iOS App Store 패키지를 테스트 장비에 적절하게 동기화합니다.

출처

질문에 더 구체적으로 답변하는 중 …

앱의 새 버전을 앱 스토어에 업로드 할 때 어떤 버전 / 빌드 번호를 증가시켜야합니까?

양자 모두. 하나는 App Store에 표시되고 다른 하나는 iTunes에서 앱을 업데이트하는 데 사용됩니다.

CFBundleShortVersionString 또는 CFBundleVersion이 앱 업데이트간에 동일하게 유지 될 수 있습니까?

아니요. (메타 질문, 사용 사례는 무엇입니까? 어떤 식 으로든 페이로드를 편집했다면 빌드가 달라지고 사용자가 이에 대해 알고 싶어 할 것입니다). 시도하면 아래와 같은 오류 메시지가 표시됩니다.

오류 메시지

아니면 새 버전의 앱에 더 많은 숫자가 업로드되도록하기 위해 이전의 각 숫자와 비교됩니까?

예. 은 Using semver.org 표준.

CFBundleShortVersionString 및 CFBundleVersion 번호가 어떤 식 으로든 서로 비교됩니까?

아니.


답변

CFBundleShortVersionString 은 버전의 공개 “이름”입니다 (예 : “2.5”또는 “3.8.1”). 릴리스 할 때마다 늘려야합니다 .

CFBundleVersion 은 비공개 빌드 번호입니다. AppStore에 표시되지 않습니다. 업로드 할 때마다 늘려야합니다 . 즉, 온라인 상태가되기 전에 바이너리를 거부하고 새 바이너리를 업로드하려는 경우 동일한 CFBundleShortVersionString을 가지지 만 더 높은 CFBundleVersion (예 : 공개 “2.5”, 비공개 “2.5”, 그런 다음 바이너리 거부 및 비공개 ‘2.5.1’다시 업로드)

2016 년 11 월 16 일 수정 :

/ ! \ CFBundleVersion 속성은 코드의 NSURLConnection 에서 보낸 헤더 에서도 CFBundleName 과 함께 사용됩니다 .User-Agent

예 : CFBundleNameMyApp 이고 CFBundleVersion 이 2.21이면 NSURLConnection 을 사용하여 코드에서 직접 보낸 프로그래밍 방식 HTTP 쿼리 에 헤더가 포함됩니다.

User-Agent: MyApp/2.21 CFNetwork/... Darwin/...

(UIWebView에 의해 자동으로 발행 된 요청에는 적용되지 않습니다.)


답변

CFBundleVersion 및 CFBundleShortVersionString은 앱의 마지막 버전 번호보다 커야합니다. 동일하게 유지하는 것이 좋습니다. -info.plist에서 찾을 수 있습니다.

Organizer에서 앱의 유효성을 검사하려고 할 때 둘 중 하나가 증가하지 않은 경우 오류가 발생합니다. 어젯밤 나에게 일어났다.


답변

둘 다 CFBundleVersionCFBundleShortVersionString 필수App Store에 새 버전을 출시 할 때 증가 합니다.

또한 문자열 중 하나는 iTunes Connect에 지정된 버전과 일치해야합니다.

Xcode Organizer Validator 오류 : 버전 번호를 증가시켜야합니다.

이 질문은 때 응용 프로그램의 유효성을 검사 거부 Xcode의 주최자의 유효성 검사기의 위의 스크린 샷을 포함 CFBundleVersion하고 CFBundleShortVersionString증가되지 않은 있습니다.

  • 이 번들은 유효하지 않습니다. CFBundleVersionInfo.plist 파일의 키 [1.0]에 대한 값 은 이전에 업로드 된 버전 [1.134]보다 높은 버전을 포함해야합니다.

  • 이 번들은 유효하지 않습니다. CFBundleShortVersionStringInfo.plist 파일의 키 [1.0]에 대한 값 은 이전에 업로드 된 버전 [1.134]보다 높은 버전을 포함해야합니다.

유효성 검사기는 또한 문자열 중 하나가 iTunes Connect에서 만든 앱 버전과 일치해야한다는 오류를 표시합니다.

  • 버전 불일치. Info.plist의 CFBundleVersion [ ‘1.0’] 또는 CFBundleShortVersionString [ ‘1.0’]이 iTunes Connect [ ‘1.4’]에 설정된 앱 버전과 일치하지 않습니다.

답변

현재 Apple Technical Note TN2420, 버전 번호 및 빌드 번호 에는 다음 같이 나와 있습니다.

  1. iOS 앱의 경우 다른 릴리스 트레인에서 빌드 번호를 재사용 할 수 있지만 동일한 릴리스 트레인 내에서 빌드 번호를 재사용 할 수 없습니다. macOS 앱의 경우 릴리스 트레인에서 빌드 번호를 재사용 할 수 없습니다 .

불행히도 이것은 Mac Catalyst에서 동일한 빌드를 릴리스하려고 할 때 iOS의 릴리스 트레인 번호를 추적하는 빌드 번호를 재사용 할 수 없음을 의미합니다.

예를 들어, 제 경우에는 이전 문제로 인해 iOS에서 1.0.2 (1)에 해당하는 Mac Catalyst 앱으로 1.0.2 (4)를 출시했습니다. 이제 둘 다에서 1.0.3 (1)을 릴리스하려고 할 때 빌드 번호로 인해 MacOS에서 앱이 확인에 실패하고 iOS에서 확인을 통과합니다.

이제 iOS와 MacOS에서 동일한 앱을 정기적으로 출시하고 있으므로 20200111과 같은 날짜에 해당하는 빌드 번호를 채택하고 특정 릴리스 내에서 빌드 번호를 변경해야하는 경우 소수점으로 증가 할 것입니다.


답변

둘 다 증가시켜야 합니다. .

새 버전을 업로드 할 때 iTunes Connect에서 새 버전을 생성해야합니다.이 버전은 자동으로 이전 버전보다 높습니다. iTunes Connect의이 버전은 동일한 버전 번호의 바이너리를 예상하므로 CFBundleShortVersionString증분되어야합니다.

버전을 업데이트했지만를 올리지 CFBundleVersion않으면 업로드 중에 오류가 발생합니다. pkamb의 답변과 스크린 샷을 참조하십시오.

CFBundleShortVersionString및 에 대한 자세한 내용은 https://stackoverflow.com/a/31921249/936957을CFBundleVersion 참조하십시오.