앱스토어 릴리스 시 증가해야 하는 iOS 앱 버전/빌드 번호는 무엇입니까?
iOS 앱의 버전/빌드 필드는 다음과 같습니다.
"Version" CFBundleShortVersionString(String - iOS, OS X)은 번들의 릴리스 버전 번호를 지정하여 앱의 릴리스된 반복을 식별합니다.릴리스 버전 번호는 마침표로 구분된 세 개의 정수로 구성된 문자열입니다.
빌드 CFBundleVersion(String - iOS, OS X)은 번들의 빌드 버전 번호를 지정하며, 번들의 반복(릴리스 또는 미공개)을 식별합니다.빌드 버전 번호는 음수가 아닌 마침표로 구분된 세 개의 정수로 구성된 문자열이어야 하며 첫 번째 정수는 0보다 커야 합니다.문자열은 숫자(0-9) 및 마침표(.) 문자만 포함해야 합니다.선행 0은 각 정수에서 잘리고 무시됩니다(즉, 1.02.3은 1.2.3과 같습니다).이 키는 현지화할 수 없습니다.
"iTunes Connect 버전 번호": iTunes Connect에서 앱의 새 버전을 만들 때 지정하는 버전 번호.
제 질문은:
앱의 새 버전이 iTunes Connect에 업로드되거나 앱 스토어에 릴리스될 때 증가해야 하는 버전/빌드 번호는 무엇입니까?
"버전" 중 하나를 사용할 수 있습니다.CFBundleShortVersionString
또는 "빌드"CFBundleVersion
앱 업데이트 간에 동일하게 유지됩니까?
Apple 소스에 대한 추가 사항 또는 잘못된 버전/빌드 번호를 업로드할 때 iTunesConnect가 표시하는 정확한 오류 메시지.
Android / Google Play 노트:
Google Play Store에서 Android 앱의 공개 "버전"을 늘릴 필요가 없으며 검증되지 않는다는 것이 이 질문을 유발하는 논의입니다.그android:versionName
릴리스, 업그레이드, 다운그레이드 또는 올바른 "버전 번호"로 나타나는 문자열이 아닌 임의의 문자열일 수 있습니다.
android:versionName
사용자에게 표시되어야 하는 응용 프로그램 코드의 릴리스 버전을 나타내는 문자열 값입니다.은 응용 을 " " " " " " " " " " " " " " " " " " 이라고 할 수 입니다.
<major>.<minor>.<point>
문자열 또는 다른 유형의 절대 또는 상대 버전 식별자입니다.
Android에서 versionName과 versionNumber의 차이점
에 면에그 반그.android:versionCode
릴리스 시 증분 정수로 적용됩니다.
애플 문서
새로 수락된 답변에서 언급했듯이, 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)은 오름차순 순서여야 합니다.
버전 번호 및 빌드 번호 체크리스트
다음은 앱스토어에 새 빌드를 제출할 때 확인할 수 있는 몇 가지 사항입니다.버전 번호와 빌드 번호를 올바르게 설정하면 부적절하게 구성된 앱이 자동으로 거부되는 것을 방지할 수 있습니다.
- 앱의 각 새 버전에 대해 새 버전 번호를 생성해야 합니다.이 숫자는 마지막으로 사용한 버전 번호보다 큰 값이어야 합니다.앱의 특정 릴리스에 대해 많은 빌드를 제공할 수 있지만 앱의 새 릴리스마다 새 버전 번호를 하나만 사용하면 됩니다.
- 버전 번호는 재사용할 수 없습니다.
- 제출하는 모든 새 빌드에 대해 마지막으로 사용한 빌드 번호(동일 버전)보다 큰 값의 새 빌드 번호를 생성해야 합니다.
- 다른 릴리스 트레인에서 빌드 번호를 다시 사용할 수 있지만 동일한 릴리스 트레인 내에서 빌드 번호를 다시 사용할 수는 없습니다.macOS 앱의 경우, 어떤 릴리스 트레인에서도 빌드 번호를 재사용할 수 없습니다.
과 같은 체크리스트가 있습니다.(Version, Build Number)
시퀀스도 유효합니다.
례사: 재용사용
Build Number
서로 다른 릴리즈 트레인에서.(참고: macOS 앱 아님)(1.0.0, 1) -> (1.0.0, 2) -> ... -> (1.0.0, 11) -> (1.0.1, 1) -> (1.0.1, 2)
그CFBundleShortVersionString
iTunes Connect에 지정한 버전 번호와 일치해야 합니다.사용자가 앱스토어에서 앱을 볼 때 나타나는 버전 번호이기도 합니다.
버전 번호는 스토어에 표시되며 해당 버전은 나중에 iTunes Connect에 입력한 버전 번호와 일치해야 합니다.
그CFBundleVersion
앱 스토어에는 표시되지 않지만 iTunes에서 앱이 업데이트된 시기를 확인하는 데 사용됩니다.
"버전 번호 및 빌드 문자열 설정"에 설명된 대로 빌드 문자열을 업데이트하면 iTunes는 빌드 문자열이 변경되었음을 인식하고 새 iOS App Store 패키지를 테스트 장치에 올바르게 동기화합니다.
질문에 좀 더 구체적으로 대답하자면...
앱 스토어에 새 버전의 앱을 업로드할 때 어떤 버전/빌드 번호를 증가시켜야 합니까?
둘 다. 하나는 앱 스토어에 표시되고 다른 하나는 iTunes에서 앱을 업데이트하는 데 사용됩니다.
앱 업데이트 간에 CFBundleShortVersionString 또는 CFBundleVersion을 동일하게 유지할 수 있습니까?
아니요. (메타 질문입니다. 여기 사용 사례는 무엇입니까?어떤 식으로든 페이로드를 편집한 경우 빌드가 달라지며 사용자는 이에 대해 알고 싶어할 것입니다.시도하면 다음과 같은 오류 메시지가 표시됩니다.
아니면 새 버전의 앱과 함께 숫자적으로 더 많은 숫자가 업로드되도록 이전의 각 숫자와 비교하는 것입니까?
네. semver.org 표준을 사용합니다.
CFBundleShortVersionString 및 CFBundleVersion 번호는 어떤 식으로든 서로 비교됩니까?
아니요.
CFBundleShortVersionString은 버전의 공개 "이름"입니다(예: "2.5" 또는 "3.8.1").각 릴리스에서 이 값을 늘려야 합니다.
CFBundleVersion은 개인 빌드 번호입니다.앱스토어에는 표시되지 않습니다.업로드할 때마다 이 값을 늘려야 합니다.즉, 온라인 상태가 되기 전에 이진을 거부하고 새 이진을 업로드하려면 CFBundleShortVersionString은 동일하지만 CFBundleVersionString은 더 높은 CFBundleVersion을 가져야 합니다(예: 공용 "2.5", 개인 "2.5", 바이너리 "2.5", 바이너리 거부 후 개인 "2.5.1").
2016년 11월 16일 편집:
CFBundleVersion 속성은 CFBundleName과 함께User-Agent
코드에서 NSURLConnection에 의해 전송된 헤더입니다.
예: CFBundleName이 MyApp이고 CFBundleVersion이 2.21이면 NSURLConnection을 사용하여 코드에서 직접 전송한 모든 프로그래밍 HTTP 쿼리가 헤더를 포함합니다.
User-Agent: MyApp/2.21 CFNetwork/... Darwin/...
(UIWebView에서 자동으로 실행되는 요청에는 적용되지 않습니다.)
CFBundleVersion 및 CFBundleShortVersionString은 앱의 마지막 버전 번호보다 커야 합니다.그것들을 그대로 유지하는 것은 좋은 관행입니다.-info.plist에서 찾을 수 있습니다.
전자수첩에서 앱의 유효성을 검사하려고 할 때 둘 중 하나가 증가하지 않은 경우 오류가 발생합니다.어젯밤에 저한테 일어난 일입니다.
둘다요.CFBundleVersion
그리고.CFBundleShortVersionString
앱스토어에 새 버전을 릴리스할 때 반드시 증분해야 합니다.
또한 문자열 중 하나는 iTunes Connect에 지정된 버전과 일치해야 합니다.
이 질문에는 Xcode Organizer의 Validator가 앱 유효성 검사를 거부하는 위의 스크린샷이 포함됩니다.CFBundleVersion
그리고.CFBundleShortVersionString
증가하지 않았습니다.
이 번들이 잘못되었습니다. 키 의 값
CFBundleVersion
Info.plist 파일의 [1.0]은(는) 이전에 업로드된 버전 [1.134]보다 높은 버전을 포함해야 합니다.이 번들이 잘못되었습니다. 키 의 값
CFBundleShortVersionString
Info.plist 파일의 [1.0]은(는) 이전에 업로드된 버전 [1.134]보다 높은 버전을 포함해야 합니다.
또한 검증자는 문자열 중 하나가 iTunes Connect에서 만든 앱의 버전과 일치해야 한다는 것을 증명하는 오류를 던집니다.
- 버전이 일치하지 않습니다.Info.plist의 CFBundleVersion ['1.0'] 또는 CFBundleShortVersionString ['1.0']이(가) iTunes Connect ['1.4']의 앱 세트 버전과 일치하지 않습니다.
현재 Apple 기술 노트 TN2420, 버전 번호 및 빌드 번호에는 다음과 같은 내용이 있습니다(나의 굵은 글씨).
- iOS 앱의 경우 여러 릴리스군에서 빌드 번호를 다시 사용할 수 있지만 동일한 릴리스군 내에서 빌드 번호를 다시 사용할 수는 없습니다.macOS 앱의 경우, 어떤 릴리스 트레인에서도 빌드 번호를 재사용할 수 없습니다.
안타깝게도, 이것은 Mac Catalyst에서 동일한 빌드를 릴리스하려고 할 때 iOS의 릴리스 트레인 번호로 추적하는 빌드 번호를 재사용할 수 없다는 것을 의미합니다.
예를 들어, 저의 경우 이전 문제로 인해 iOS에서 1.0.2(1)에 해당하는 Mac Catalyst 앱으로 1.0.2(4)를 릴리스하게 되었습니다.이제 앱이 두 가지 모두에서 1.0.3(1)을 릴리스하려고 할 때 iOS에서 검증을 통과하는 동안 빌드 번호 때문에 MacOS에서 검증에 실패합니다.
iOS와 MacOS 모두에서 동일한 앱을 정기적으로 출시하고 있으므로, 20200111과 같이 날짜에 해당하는 빌드 번호를 채택하고 지정된 릴리스 내에서 빌드 번호를 변경해야 할 경우 소수점으로 증분할 것입니다.
두 가지 방법으로 시도해 본 결과, 일련의 버전과 빌드 번호가...
1.0.0 (1)
1.0.1 (1)
1.0.2 (1)
...iOS 앱에서는 허용되지만 Mac(Catalyst) 앱에서는 다음 오류가 반환됩니다.
오류 ITMS-90061: "이 번들은 유효하지 않습니다.Info.plist 파일의 키 CFBundleVersion [1] 값에 이전에 업로드한 버전 [2]보다 높은 버전이 포함되어 있어야 합니다."
Mac 버전과 빌드 번호는 다음과 같이 입력해야 합니다.
1.0.0 (1)
1.0.1 (2)
1.0.2 (3)
iOS의 경우 빌드 번호를 버전 번호와 네 번째 숫자로 입력하곤 했습니다. 예를 들어...
1.0.0 (1.0.0.1)
1.0.1 (1.0.1.1)
1.0.2 (1.0.2.1)
...하지만 Mac 앱에도 허용되지 않습니다.제가 첫 번째 Mac(Catalyst) 앱을 제출하려고 했을 때, Apple은 3자리 이하의 빌드 번호만 허용했습니다.
오류 ITMS-9000: "이 번들은 유효하지 않습니다.Info.plist 파일에서 키 CFBundleVersion [1.0.0.1]의 값은 음이 아닌 정수 세 개 이상의 마침표로 구분된 목록이어야 합니다."
그래서 빌드할 때마다 증가하고 버전 번호 전체에 걸쳐 계속 증가하는 단일 번호로 변경했습니다.
둘 다 증분해야 합니다.
새 버전을 업로드할 때 iTunes Connect에 새 버전을 만들어야 합니다. 이 버전은 이전 버전보다 자동으로 더 높아집니다.iTunes Connect의 이 버전은 동일한 버전 번호를 가진 이진 파일이 필요합니다.CFBundleShortVersionString
증가해야 합니다.
을 잊어버린 CFBundleVersion
업로드하는 동안 오류가 발생합니다. 및을 참조하십시오.pkamb 파일을 하십시오.
에 대한 자세한 CFBundleShortVersionString
그리고.CFBundleVersion
다음을 참조하십시오: https://stackoverflow.com/a/31921249/936957
저는 새로운 맥 앱 스토어 앱을 출시할 준비를 하고 있습니다.CalVer 형식 지정 사용YEAR.release (build)
.
는 몇의 빌드를 했습니다.2020.0 (1)
,2020.0 (2)
등. 드디어 제출했습니다.2020.0 (8)
앱 스토어 리뷰용입니다.검토를 통과했으며 개발자 릴리스 보류 상태입니다.
에 몇 트레인에 새 했습니다.2020.0 (9)
.
그러면 다음 오류가 발생합니다.
앱스토어 연결 작업 오류
오류 ITMS-90062: "이 번들은 유효하지 않습니다.키 값
CFBundleShortVersionString
Info.plist 파일의 [2020.0]은(는) 이전에 승인된 버전 [2020.0]보다 높은 버전을 포함해야 합니다.에 대한 더 많은 .CFBundleShortVersionString
https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring 에서"
그것은 나의 짜증나는 것입니다.2020.0
버전은 실제로 출시된 적이 없습니다.이 질문의 수락된 답변에서 저는 앱 스토어에서 앱을 사용할 수 있을 때까지 동일한 버전의 새 빌드를 계속 출시할 수 있다는 인상을 받았습니다.
- 오류 ITMS-90062:키 CFBundleShortVersionString의 값은 이전에 승인된 버전보다 높은 버전을 포함해야 합니다.
- 응용 프로그램 로더 오류 ITMS-90062:키 CFBundleShortVersionString의 값은 상위 버전을 포함해야 합니다.
해결책은 앱 상태가 개발자 릴리스 보류 중인 경우 "릴리스 트레인"(동일 버전 + 새 빌드)을 업데이트할 수 없는 것 같습니다.기존 빌드를 릴리스한 다음 버전을 늘리거나 앱스토어 연결에서 이 릴리스를 취소하여 이 릴리스 트레인에 대한 추가 업로드를 허용합니다.
AFAIK, 내 머리에서 빌드 번호만 증분하면 됩니다.CFBundleVersion
짧은 버전 문자열을 늘릴 필요는 없지만 앱이 새 것임을 사용자에게 알려주기 때문에 반드시 증분해야 합니다.그러나 Apple은 번호 매기기가 전통적인 소프트웨어 버전 규칙을 따라야 한다고 말하고 있으며, 이미 존재하는 버전을 다시 업로드하려고 하면 iTunes Connect에서 불만을 제기할 수 있습니다.
간단히 말해서, 그것은 효과가 있을지 모르지만, 아마도 아닐 것입니다.
언급URL : https://stackoverflow.com/questions/21125159/which-ios-app-version-build-numbers-must-be-incremented-upon-app-store-release
'programing' 카테고리의 다른 글
파일 확장명을 기반으로 Gitdiff를 필터링하는 방법은 무엇입니까? (0) | 2023.06.24 |
---|---|
ASP.NET ID 2에서 "잘못된 토큰" 오류가 발생함 (0) | 2023.06.24 |
세 번째 게시물마다 루프를 다시 실행하시겠습니까? (Wordpress) (0) | 2023.06.24 |
SQL의 DATTIME 열에서 DATE를 가져오는 방법은 무엇입니까? (0) | 2023.06.24 |
com.google.gms.common.internal.safe parcel.safe parcelable이 없습니다. (0) | 2023.06.24 |