İTunes Connect'teki "sürüm numarası", Xcode'daki "paket sürümü", "paket sürüm dizesi" arasındaki fark nedir?


95

Apple'ın belgesi, bir güncelleme sürümünün nasıl gönderileceği konusunda daha net olabilirdi.

Başlıkta sorulduğu gibi, arasındaki fark nedir

  1. itunes connect'teki sürüm numarası (güncelleme gönderirken sağlamanız gereken)
  2. xcode'da paket sürümü
  3. paket sürümleri dizesi, kısa

Herhangi bir şekilde ilişkili mi?


12
Apple ve kafa karıştırıcı terimleri / alanları ...: /
BoltClock

Lütfen önceki
cevabıma

Yanıtlar:


145

Evet, akraba. Hepsi uygulamanızın sürümüne atıfta bulunur.

  • iTunes Connect
    Bu, App Store'da gösterilen sürüm numarasıdır; Bu, aşağıdaki gibi saf bir sürüm numarası olmalıdır1.2.3

  • Paket Sürümü (CFBundleVersion)
    Bunun saf bir sürüm numarası olması gerekmez. Bu, 12345veya gibi bir şey olabilir 1.2.3 (Build 12345AB). Bu, örneğin Mac OS X uygulamaları için Hakkında penceresinde gösterilir ve genellikle bir "Sürüm Numarası" ndan daha çok bir "Yapı Numarası" dır.

  • Paket Sürümü Dizesi (CFBundleShortVersionString) Bu değer, "gerçek" sürüm numarası olarak kullanılır. Bu , iTunes Connect'teki sürüm için kullanılanla aynı dize olmalıdır .

Güncelleme:
@snlehton tarafından belirtildiği gibi, CFBundleVersion , 1.2.3uygulamanızı (iOS) App Store'a yüklemek istediğinizde olduğu gibi saf bir sürüm numarası olmalıdır .


3
İçin test sizin gibi son hali numarasına paket sürümü dizesini ayarlayın 1.2.3ve daha sonra her yapı için paket versiyonu artırmaz.
Fabian Kreiser

19
BU YANLIŞ CFBundleVersion'ın xyz için olması gerekiyor, aksi takdirde bir yapının yüklenmesi başarısız olur! bağlantı
snlehton

2
Yakın zamanda "1.0.2 RC3" ile CFBundleVersion ile bir derleme gönderdim ve hata mesajı ile geri döndü: "Paket geçersiz. Info.plist dosyasındaki anahtar CFBundleVersion negatif olmayan tamsayıların noktayla ayrılmış bir listesi olmalıdır." Bence nn.n.nxnnn kullanmak için doğru format, ancak henüz denemedim.
snlehton

3
1235 CFBundleVersion burada, sorun yok
Piotr Tomasik

4
Buradaki karışıklık, CFBundleShortVersionString'in isteğe bağlı olması ve ayarlandığında CFBundleVersion'ın ne için kullanıldığını değiştirmesidir. Yalnızca CFBundleVersion dahil ediliyorsa, o zaman genel sürüm numarası olmalıdır, ör. 1.0. Bununla birlikte, hem CFBundleVersion hem de CFBundleShortVersionString ayarlandıysa, CFBundleShortVersionString şimdi herkese açık sürüm numarası, ör. 1.0 olmalıdır. Ve şimdi CFBundleVersion, normalde tek bir tam sayı olan yapı numarası olarak değişiyor, örneğin 374629. Umarım bu onu temizler.
malhal

29

Evet birbirleriyle ilişkilidir ancak tanımları nasıl kullanıldıklarına bağlıdır.

  • iTunes Connect Sürümü

    Her zaman bir sürüm numarası olmalıdır, ör. 1.0

Kullanım modu 1 - Yalnızca CFBundleVersion ayarlandı

  • Paket Sürümü (CFBundleVersion)

    Sürüm numarası olmalıdır, ör. 1.0. İTunes Connect Sürümüyle eşleşmelidir.

Kullanım modu 2 - Hem CFBundleVersion hem de CFBundleShortVersionString ayarlandı

  • Paket Sürümü (CFBundleVersion)

    Yapı numarası olmalı, örneğin 435163 gibi tek bir tamsayı.

  • Paket Kısa Sürüm Dizesi (CFBundleShortVersionString)

    Sürüm numarası olmalıdır, ör. 1.0. İTunes Connect Sürümüyle eşleşmelidir.

Kullanım modu 2, gitmenin en iyi yoludur. Aşağıda, bir uygulamanın yükseltme yolu için bazı örnek sayılar verilmiştir:

CFBundleShortVersionString CFBundleVersion 
1.0                        1
1.0.1                      2
1.0.2                      3
1.2                        5  (build 4 was a beta and never released publicly)
1.2.1                      6

Sürüm numaralarına ilişkin ek bir not: Uygulamanıza küçük bir güncelleme (ör. Hata düzeltmesi) gönderirseniz, sürüm numarasındaki dönemleri asla kaçırmamalısınız, ör. Her zaman 1.0.1 ve ASLA 1.01 kullanın, aksi takdirde kullanamama riskiyle karşılaşırsınız. ileride belirli sürüm numaraları, çünkü bunları artırmak mümkün olmayacaktır.


2
Bu tablo tek başına, bu iki sayının nasıl ilişkili olduğunu ve pratikte nasıl kullanıldığını açıklamada en iyi işi yapar. Teşekkürler.
Joshua Pinter

İTunes Connect Sürümüyle eşleşmelidir. Bu zor bir gereklilik değil (ZORUNLU olsa bile)
Marco Pappalardo

13

Evet, hepsi birbiriyle bağlantılı.

İtunesconnect'teki Sürüm Numarası , sağlamanız gereken sürüm numarasıdır. Örneğin, 2.1.1 veya 3.1.2 vb. Bu da CFBundleShortVersionString'e eşit olmalıdır .

Xcode'daki Paket Sürümü ( CFBundleVersion ) yalnızca uygulamanın bir yinelemesini (yayımlanmış veya yayımlanmamış) tanımlayan Derleme numarasını temsil eder.

Paket sürümleri dizesi, kısa ( CFBundleShortVersionString ) noktalarla ayrılmış üç tam sayıdan oluşan bir sayıdır. Birincisi, yeni özellikler veya büyük değişiklikler uygulayan güncellemeler gibi uygulamanın önemli güncellemelerini temsil eder. İkinci tam sayı, daha az öne çıkan özellikleri uygulayan revizyonları belirtir. Üçüncü tam sayı, bakım sürümlerini temsil eder.


3
Aslında, "Paket sürümleri dizesi, kısa" nın noktalarla ayrılmış ÜÇ sayı olması gerekmez. Bence "1" ve "1.1" de geçerli.
Nicolas Miari

aslında itunesconnect'teki test Sürüm Numaramdan CFBundleVersion ve ShortVersion'dan tamamen bağımsızdır. Hatta onları farklı da yapabilirsiniz
Marco Pappalardo

11

CFBundleVersion konusunda dikkatli olun . Bu sadece bir üretim yapı numarası değildir. Bu değer, ikili yükleme işlemi sırasında Apple tarafından kontrol edilir ve başarısız olabilir.

Sürümünüzü gönderime oluştururken CFBundleVersion değerini CFBundleShortVersionString değeriyle ayarladığınızdan emin olun .

Bununla ilgili bu gönderiye bakın


3
Bu doğru bilgidir, kabul edilen cevap aslında yanlıştır.
snlehton

9
Bu doğru CFBundleVersiondeğil, eşleşmesi gerekmiyor CFBundleShortVersionString. Örneğin, Chrome için geçerli .ipa dosyasına (şu anda uygulama mağazasında) bakarsanız, bunlarda "34.0.1847.18" için CFBundleVersionve "34.1847.18" için CFBundleShortVersionString.
progrmr

6
CFBundleVersion ve CFBundleShortVersionString'in aynı olması gerektiğini söyleyen hiçbir belge yoktur.
Toydor

8

Kabul edilen cevap, gidilecek yoldur - sadece bunu bir örnek olarak eklemek.

Son sürümümüz için "Paket Sürümü Dizesi, kısa" gerekiyordu ve devam edip bunu Bundle sürüm numarasıyla (uygulamamız için 1.2.8) eşleştirdim.

Daha sonra Testflight'ı etkinleştirdim ve Apple incelemesini bekleyen sürümü (1.2.8) dahili test kullanıcılarımızın kullanımına sundum. Ancak bir test cihazı, düzeltilmesi gereken bir sorun buldu ve ikili dosyayı yerinde sildik. Yeni bir yapı yüklerken, derleme sürümünün zaten yüklendiğini belirten bir hata aldık.

Birkaç SO bağlantısını ve Apple belgesini okuduktan sonra, anladığım kadarıyla paket versiyonu: 1.2.8.001, paket versiyonu kısa olduğu gibi sürdürülüyordu. Yeni bir derleme gerekliyse, paket sürümünü 1.2.8.002'ye yükseltiriz.

Not: Yükleme kabul edildi ve oluşturma, ön sürüm altında "1.2.8.001" olarak görünür. Sürüm numarası 1.2.8 olarak kalır.


3

Bu bağlantının kabul edilen yanıtı iyi ayrıntılar içerir: Hangi iOS uygulama sürümü / yapı numaraları, App Store yayınlandıktan sonra ARTIRILMALIDIR?

Apple belgelerinden

CFBundleVersion (Paket sürümü)

CFBundleVersion (String - iOS, OS X), paketin bir yinelemesini (yayımlanmış veya yayımlanmamış) tanımlayan paketin derleme sürüm numarasını belirtir. Derleme sürüm numarası, ilk tamsayı sıfırdan büyük olan üç negatif olmayan, noktayla ayrılmış tamsayıdan oluşan bir dize olmalıdır. Dize yalnızca sayısal (0-9) ve nokta (.) Karakterleri içermelidir. Baştaki sıfırlar her tam sayıdan kesilir ve yok sayılır (yani 1.02.3, 1.2.3'e eşdeğerdir). Bu anahtar yerelleştirilemez.

CFBundleShortVersionString (Paket sürümleri dizesi, kısa)

CFBundleShortVersionString (String - iOS, OS X), uygulamanın yayımlanmış bir yinelemesini tanımlayan paketin yayın sürüm numarasını belirtir. Yayın sürüm numarası, noktayla ayrılmış üç tam sayıdan oluşan bir dizedir. İlk tam sayı, yeni özellikler veya büyük değişiklikler uygulayan revizyonlar gibi uygulamada yapılan önemli revizyonları temsil eder. İkinci tam sayı, daha az öne çıkan özellikleri uygulayan revizyonları belirtir. Üçüncü tam sayı, bakım sürümlerini temsil eder.

Bu anahtarın değeri, uygulamanın bir yinelemesini (yayımlanmış veya yayımlanmamış) tanımlayan CFBundleVersion değerinden farklıdır. Bu anahtar, InfoPlist.strings dosyalarınıza eklenerek yerelleştirilebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.