Perbedaan antara versi Xcode (CFBundleShortVersionString) dan build (CFBundleVersion)

94

Ringkasan Target Aplikasi

Di Xcode 4, saya melihat ini untuk ringkasan target saya:

Masukan "Versi" terkait dengan CFBundleShortVersionStringfile info.plist, dan masukan "Bangun" terkait dengan CFBundleVersion.

Apa perbedaan antara keduanya? Saya melihat banyak orang di internet ingin memberikan nilai yang sama untuk keduanya, dan kecurigaan saya adalah kompatibilitas mundur.

Saya punya dua pertanyaan:

1) Jika saya memulai dari awal, apa praktik terbaik untuk membuat versi aplikasi Anda?

2) Di semua rilis aplikasi saya sebelumnya, saya hanya menggunakan CFBundleVersion. Agar tidak mengacaukan proses peningkatan, haruskah saya terus menaikkan CFBundleVersiondengan cara yang saya lakukan atau apakah mungkin untuk beralih ke "cara yang benar", dengan asumsi ada?

Philip Walton
sumber
3
Ini adalah duplikat dari stackoverflow.com/questions/6851660/version-vs-build-in-xcode-4 tetapi mungkin versi ini lebih baik dinyatakan (dan memiliki tangkapan layar).
Daniel Dickison
Apakah ada yang harus Anda lakukan untuk menampilkan bidang Bangun di Ringkasan? Saya hanya melihat Versi, tetapi tidak ada bidang Build.
Kenny Wyland

Jawaban:

68

Dokumen Apple "Referensi Kunci Daftar Properti Informasi" mengatakan bahwa itu CFBundleShortVersionStringmewakili versi rilis, sedangkan CFBundleVersionmewakili versi apa pun, dirilis atau tidak. Juga, CFBundleShortVersionStringdapat dilokalkan, meskipun saya tidak tahu mengapa Anda mau, karena mereka mengatakan itu seharusnya menjadi "string yang terdiri dari tiga bilangan bulat yang dipisahkan titik". Untuk versi rilis, masuk akal untuk membuat kedua nomor itu sama. Untuk build pengembangan, Anda mungkin menempelkan sesuatu yang lain ke CFBundleVersion, mungkin titik dan bilangan bulat lain.

JWWalker
sumber
Tetapi jika saat ini saya telah menggunakan 1.3.1 sebagai milik saya CFBundleVersiondan tidak ada sebagai milik saya CFBundleShortVersionString, dan saya ingin beralih menggunakan CFBundleVersionuntuk merepresentasikan build internal, maka saya harus setidaknya memulai dengan integer yang lebih tinggi dari 1.3.1, bukan? Atau apakah membuat peralihan itu hanya menimbulkan masalah?
Philip Walton
Versi ( CFBundleShortVersionString) adalah satu-satunya hal yang penting untuk dikirimkan ke Apple. Build ( CFBundleVersion) adalah untuk digunakan sesuka Anda dalam pengembangan, atau untuk ditampilkan dalam aplikasi Anda. Gunakan oktal (basis 8) dan ulangi secara terbalik dengan 12, jika Anda suka.
nekno
16
nekno: Sebenarnya CFBundleVersion adalah hal yang penting bagi Apple. Periksa pesan kesalahan ini yang diberikan Apple saat mengirimkan aplikasi: "Biner yang Anda unggah tidak valid. Kunci CFBundleVersion dalam file Info.plist harus berisi versi yang lebih tinggi daripada versi yang diunggah sebelumnya."
malhal
10
Beberapa negara menggunakan angka selain bahasa Arab Modern yang digunakan di dunia barat, seperti Arab Timur (٠, ١, ٢, ٣, ٤, ٥, ٦, ٧, ٨, ٩), atau Ibrani (א, ב, ג, ד, ה, ו, ז, ח, ט) - dan keduanya juga ditulis dari kanan ke kiri. Ada lebih banyak lagi sistem angka lain di luar sana (lihat en.wikipedia.org/wiki/Category:Numerals ) Jadi tebakan saya adalah apa yang dimaksud Apple dengan nomor versi "dapat dilokalkan".
Ruslan Ulanov
Omong-omong, tiga angka dengan tanda baca tidak diperlukan. Saya telah menggunakan sebagai gantinya nilai tanggal-waktu seperti 201606070620untuk kedua nilai dalam aplikasi pengiriman iOS 7-8-9.
Basil Bourque
3

Untuk pertanyaan JWWalker tentang mengapa Anda ingin melokalkan CFBundleShortVersionString, itu akan menjadi pemisah desimal. Misalnya di lokal di mana pemisah desimal sebenarnya adalah koma, versi "1.5" adalah "1,5".

Arjun
sumber
30
IMO Anda tidak perlu melokalkan nomor versi. Saya tinggal di wilayah di mana pemisah desimal adalah koma (Jerman), dan saya terbiasa dengan nomor versi yang dipisahkan oleh titik. Faktanya, saya tidak dapat mengingat bahwa saya pernah melihat nomor versi dengan koma.
Christian Specht
2
Saya juga tinggal di wilayah yang menggunakan koma sebagai pemisah desimal, meskipun 1,3,1 adalah nilai yang cukup ganjil, 1,3.1 tampaknya jauh lebih baik.
Lucien
1
Saya pikir itu berarti Anda dapat memiliki versi aplikasi yang berbeda untuk wilayah yang berbeda. 1.2.1> en.lproj 1.2.2> fr.lproj Meskipun keseluruhan plist disalin saat Anda melokalkan file sehingga kedua nomor versi disalin sehingga keduanya 'dapat dilokalkan'
brian.clear
1

Perbaikan Cepat:

Cukup tambahkan CFBundleShortVersionStringke file plist dan edit versi Anda.

  1. Ungkapkan InfoPlist.strings
  2. Sorot dan tempel kode di bawah ini (dengan asumsi dalam mode kode sumber)

{"CFBundleShortVersionString" = "1.1";}

  1. Ubah 1.1 menjadi apa pun build baru Anda.
  2. Bangun & kirim tanpa kesalahan lagi!

masukkan deskripsi gambar di sini

Louie
sumber
1

Lihat dokumentasi Apple tentang mengunggah binari.

Versi dan versi penomoran: iTunes Connect mengekstrak nomor versi prarilis dan nomor build dari biner. Nomor versi prarilis adalah nomor Versi Xcode, atau kunci "Bundle version string, short" di Info.plist. Nomor build adalah nomor Build Xcode, atau kunci "Versi paket" di Info.plist. Nomor versi prarilis dan nomor build akan ditampilkan di tab Prarilis, seperti yang dijelaskan dalam Melihat Build.

Mengupload Biner Untuk Aplikasi

GilesDMiddleton
sumber