Xcode sürümü (CFBundleShortVersionString) ve derleme (CFBundleVersion) arasındaki fark


94

Uygulama Hedef Özeti

Xcode 4'te, hedef özetim için şunu görüyorum:

"Sürüm" girişi CFBundleShortVersionString, info.plist dosyasındaki "Sürüm" girdisine karşılık gelir ve "Yapı" girdisi karşılık gelir CFBundleVersion.

Bu ikisi arasındaki fark nedir? İnternette her ikisine de aynı değeri koymak isteyen pek çok insan görüyorum ve benim şüphem bu geriye dönük uyumluluk.

İki sorum var:

1) En baştan başlamış olsaydım, uygulamanızı versiyonlamak için en iyi uygulama ne olurdu?

2) Uygulamamın önceki tüm sürümlerinde yalnızca kullandım CFBundleVersion. Yükseltme sürecini bozmamak için, olduğu gibi artırmaya devam etmeli miyim CFBundleVersion, yoksa var olduğunu varsayarak "doğru yola" geçmek mümkün müdür?


3
Bu, stackoverflow.com/questions/6851660/version-vs-build-in-xcode-4'ün bir kopyasıdır ancak belki de bu sürüm daha iyi belirtilmiştir (ve ekran görüntüsü vardır).
Daniel Dickison

Yapı alanını Özetinizde göstermek için yapmanız gereken bir şey var mı? Yalnızca bir Sürüm görüyorum, ancak Yapı alanı yok.
Kenny

Yanıtlar:


68

Elma belge "Bilgi Mülkiyet Liste Anahtar Referans" diyor CFBundleShortVersionString, oysa bir sürümünü temsil CFBundleVersionserbest ya da olmasın, herhangi bir yapı gösterir. Ayrıca, CFBundleShortVersionStringyerelleştirilebilir, ancak neden isteyeceğinizi bilmiyorum, çünkü bunun "üç noktayla ayrılmış tam sayıdan oluşan bir dizge" olması gerektiğini söylüyorlar. Bir sürüm yapısı için iki sayının aynı olması mantıklı olacaktır. Bir geliştirme derlemesi için CFBundleVersion, belki başka bir nokta ve tamsayıya başka bir şey ekleyebilirsiniz .


Ancak şu anda 1.3.1'i kendim olarak kullanıyorsam ve benim kadar CFBundleVersionhiçbir şey CFBundleShortVersionStringkullanmıyorsam CFBundleVersionve iç yapıları temsil etmek için kullanmaya geçmek istiyorsam , en azından 1.3.1'den daha yüksek bir tamsayı ile başlamam gerekir , değil mi? Yoksa bu değişikliği yapmak sadece sorun mu istiyor?
Philip Walton

Sürüm ( CFBundleShortVersionString), Apple'a göndermek için önemli olacak tek şeydir. Build ( CFBundleVersion), geliştirmede istediğiniz gibi kullanmak veya uygulamanızın içinde göstermek içindir. Sekizlik (taban-8) kullanın ve isterseniz tersine 12'ye kadar yineleyin.
nekno

16
nekno: Aslında CFBundleVersion Apple için önemli olan şeydir. Apple'ın bir uygulamayı gönderirken verdiği şu hata mesajını kontrol edin: "Yüklediğiniz ikili dosya geçersizdi. Info.plist dosyasındaki CFBundleVersion anahtarı, önceden yüklenen sürümden daha yüksek bir sürüm içermelidir."
malhal

10
Bazı ülkeler, Batı dünyasında Modern Arapçanın kullandığı Doğu Arapça (٠, ١, ٢, ٣, ٤, ٥, ٦, ٧, ٨, ٩) veya İbranice gibi diğer rakamları kullanır. (א, ב, ג, ד, ה, ו, ז, ח, ט) - ve bu ikisi de sağdan sola yazılır. Piyasada daha pek çok sayı sistemi var (bkz. En.wikipedia.org/wiki/Category:Numerals ) Yani Apple'ın "yerelleştirilebilir" sürüm numarasıyla kastettiği budur.
Ruslan Ulanov

Bu arada, noktalama işaretli üç rakam gerekli değildir. Bunun yerine 201606070620, bir nakliye iOS 7-8-9 uygulamasındaki her iki değer için olduğu gibi bir tarih-saat değeri kullanıyorum .
Basil Bourque

3

JWWalker'ın CFBundleShortVersionString'i neden yerelleştirmek isteyeceğiniz konusundaki sorusuna, bu ondalık ayırıcı olacaktır. Örneğin, ondalık ayırıcının gerçekte virgül olduğu yerel ayarlarda, "1.5" sürümü "1,5" olacaktır.


30
IMO sürüm numaralarını yerelleştirmenize gerek yoktur. Ondalık ayırıcının virgül (Almanya) olduğu bir bölgede yaşıyorum ve bir noktayla ayrılmış sürüm numaralarına alışkınım. Aslında, virgülle bir sürüm numarası gördüğümü hatırlayamıyorum.
Christian Specht

2
Ayrıca ondalık ayırıcı olarak virgül kullanan bir bölgede yaşıyorum, 1,3,1 oldukça garip bir değer olmasına rağmen, 1.3.1 çok daha iyi görünüyor.
Lucien

1
Sanırım bu, farklı bölgeler için uygulamanın farklı sürümlerine sahip olabileceğiniz anlamına geliyor. 1.2.1> en.lproj 1.2.2> fr.lproj Dosyayı yerelleştirdiğinizde tüm plist kopyalanmasına rağmen, her iki sürüm numarası da kopyalanır, böylece her ikisi de 'yerelleştirilebilir'
brian.clear

1

Hızlı düzeltme:

Sadece CFBundleShortVersionStringplist dosyasına ekleyin ve sürümünüzü düzenleyin.

  1. Ortaya çıkar InfoPlist.strings
  2. Vurgulayın ve aşağıdaki kodu yapıştırın (kaynak kodu modunda olduğu varsayılarak)

{"CFBundleShortVersionString" = "1.1";}

  1. 1.1'i yeni yapınız ne ise değiştirin.
  2. Daha fazla hata olmadan oluşturun ve gönderin!

görüntü açıklamasını buraya girin


1

İkili dosyaların yüklenmesi ile ilgili Apple belgelerine bakın.

Sürümleri ve yapıları numaralandırma: iTunes Connect, ikiliden yayın öncesi sürüm numarasını ve yapı numarasını alır. Yayın öncesi sürüm numarası, Xcode Sürüm numarası veya Info.plist'teki "Paket sürüm dizesi, kısa" anahtarıdır. Yapı numarası, Xcode Derleme numarası veya Info.plist içindeki "Paket sürümü" anahtarıdır. Ön sürüm sürüm numarası ve yapı numarası, Yapıları Görüntüleme bölümünde açıklandığı gibi Ön Sürüm sekmesinde gösterilecektir.

Bir Uygulama İçin İkili Program Yükleme

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.