Bidang versi / build untuk aplikasi iOS meliputi:
"Version" CFBundleShortVersionString (String - iOS, OS X) menentukan nomor versi rilis bundel, yang mengidentifikasi iterasi yang dirilis dari aplikasi. Nomor versi rilis adalah string yang terdiri dari tiga bilangan bulat yang dipisahkan oleh periode.
CFBundleVersion "Build" (String - iOS, OS X) menentukan nomor versi build dari bundel, yang mengidentifikasi iterasi (dirilis atau tidak dirilis) bundel. Nomor versi build harus berupa string yang terdiri dari tiga bilangan bulat non-negatif yang dipisahkan titik dengan bilangan bulat pertama lebih besar dari nol. String hanya boleh berisi karakter numerik (0-9) dan titik (.). Nol di depan dipotong dari setiap bilangan bulat dan akan diabaikan (yaitu, 1.02.3 setara dengan 1.2.3). Kunci ini tidak dapat dilokalkan.
"Nomor Versi iTunes Connect" : nomor versi yang Anda tentukan saat membuat versi baru aplikasi di iTunes Connect.
Pertanyaanku adalah:
Nomor versi / build mana yang perlu ditambahkan saat versi baru aplikasi diunggah ke iTunes Connect dan / atau dirilis ke App Store?
Bisakah "versi" CFBundleShortVersionString
atau "build" CFBundleVersion
tetap sama di antara pembaruan aplikasi?
Poin ekstra untuk sumber Apple atau pesan kesalahan persis yang ditampilkan iTunesConnect saat mengunggah nomor versi / build yang tidak valid.
Catatan Android / Google Play:
Diskusi yang memunculkan pertanyaan ini adalah bahwa "versi" publik dari aplikasi Android di Google Play Store tidak perlu ditambah dan sama sekali tidak divalidasi. The android:versionName
dapat tetap sama antara rilis, upgrade, downgrade, atau berupa string acak bukan sesuatu yang muncul untuk menjadi "nomor versi" valid.
android:versionName
- Nilai string yang mewakili versi rilis kode aplikasi, sebagaimana harus ditampilkan kepada pengguna.Nilainya adalah string sehingga Anda dapat mendeskripsikan versi aplikasi sebagai
<major>.<minor>.<point>
string, atau sebagai jenis pengenal versi absolut atau relatif lainnya.
Perbedaan antara versionName dan versionNumber di Android
Sedangkan yang android:versionCode
diberlakukan menjadi integer incrementing-on-release.
Dokumentasi Apple
Seperti disebutkan dalam jawaban yang baru diterima , Apple baru-baru ini menerbitkan Catatan Teknis yang merinci versi dan skema nomor build mereka:
Jawaban:
Catatan Teknis Apple TN2420, Nomor Versi dan Nomor Build
Ringkasan:
Version
,Build number
) harus unik.Version
( CFBundleShortVersionString ) harus dalam urutan berurutan menaik.Build number
( CFBundleVersion ) harus dalam urutan menaik.Berdasarkan checklist,
(Version, Build Number)
urutan berikut juga valid.Kasus: digunakan kembali
Build Number
di rangkaian rilis yang berbeda. (CATATAN: BUKAN aplikasi macOS)(1.0.0, 1) -> (1.0.0, 2) -> ... -> (1.0.0, 11) -> ( 1.0.1 , 1 ) -> (1.0.1, 2)
sumber
(major, minor, patch)
cara. Dan saya telah menggunakan 4 komponen sebelumnya, tetapi App store tidak menerima format tersebut dengan 4 komponen.The
CFBundleShortVersionString
harus sesuai dengan nomor versi yang Anda berikan iTunes Connect. Ini juga merupakan nomor versi yang muncul saat pengguna melihat Aplikasi Anda di App Store.Tidak
CFBundleVersion
ditampilkan di App Store, tetapi digunakan oleh iTunes untuk menentukan kapan App Anda telah diperbarui.Menjawab pertanyaan Anda lebih spesifik ...
Kedua. Satu ditampilkan di App Store, yang lainnya digunakan oleh iTunes untuk memperbarui App.
Tidak. (Pertanyaan meta, kasus penggunaan apa di sini? Jika Anda telah mengedit payload dengan cara apa pun, build akan berbeda, dan pengguna ingin mengetahuinya). Jika Anda mencoba, Anda akan melihat pesan kesalahan seperti di bawah ini:
Iya. Menggunakan standar semver.org .
Tidak.
sumber
CFBundleShortVersionString
. Apakah ini mungkin? Saya ingin menolak aplikasi saya sendiri.CFBundleShortVersionString adalah "nama" publik dari versi tersebut (contoh: "2.5", atau "3.8.1"). Anda harus meningkatkannya di setiap rilis .
CFBundleVersion adalah nomor build pribadi . Itu tidak terlihat di AppStore. Anda harus meningkatkannya di setiap unggahan . Ini berarti bahwa jika Anda pernah menolak biner sebelum online, dan Anda ingin mengunggah biner baru, itu akan memiliki CFBundleShortVersionString yang sama tetapi harus memiliki CFBundleVersion yang lebih tinggi (contoh: publik "2.5", pribadi "2.5", dan kemudian penolakan biner, dan unggah ulang pribadi "2.5.1")
Edit pada 16 November 2016:
/ ! \ Properti CFBundleVersion juga digunakan (bersama dengan CFBundleName ) di
User-Agent
header yang dikirim oleh NSURLConnection dalam kode Anda.Contoh: jika CFBundleName adalah MyApp dan CFBundleVersion adalah 2.21, maka semua permintaan HTTP terprogram yang dikirim langsung oleh kode Anda menggunakan NSURLConnection akan menyematkan header:
User-Agent: MyApp/2.21 CFNetwork/... Darwin/...
(Ini tidak berlaku untuk permintaan yang dikeluarkan secara otomatis oleh UIWebView).
sumber
X.X-rc2
untukX.X.2
, untuk sistem CI untuk menghasilkanbuildNumber
untuk meng-upload ke iTunesConnect.CFBundleVersion dan CFBundleShortVersionString harus lebih besar dari nomor versi terakhir aplikasi. Merupakan praktik yang baik untuk menjaga mereka tetap sama. Anda harus menemukannya di -info.plist Anda.
Ketika Anda mencoba untuk memvalidasi aplikasi dalam penyelenggara, itu akan menimbulkan kesalahan jika salah satu dari mereka belum bertambah. Terjadi padaku tadi malam.
sumber
Keduanya
CFBundleVersion
danCFBundleShortVersionString
HARUS bertambah saat merilis versi baru ke App Store.Selain itu, salah satu string harus cocok dengan versi yang ditentukan di iTunes Connect.
Pertanyaan ini termasuk tangkapan layar di atas dari Xcode Organizer's Validator yang menolak untuk memvalidasi aplikasi ketika
CFBundleVersion
danCFBundleShortVersionString
belum ditambahkan.Paket ini tidak valid. Nilai untuk kunci
CFBundleVersion
[1.0] dalam file Info.plist harus berisi versi yang lebih tinggi daripada versi yang diunggah sebelumnya [1.134].Paket ini tidak valid. Nilai untuk kunci
CFBundleShortVersionString
[1.0] dalam file Info.plist harus berisi versi yang lebih tinggi daripada versi yang diunggah sebelumnya [1.134].Validator juga memberikan kesalahan yang membuktikan bahwa salah satu string harus cocok dengan versi aplikasi yang dibuat di iTunes Connect.
sumber
Saat Apel Catatan Teknis TN2420, Nomor Versi dan Nomor Build mengatakan (saya huruf tebal):
Sayangnya, ini berarti Anda tidak dapat menggunakan kembali nomor build yang melacak nomor kereta rilis di iOS saat Anda mencoba merilis build yang sama di Mac Catalyst.
Dalam kasus saya, misalnya, karena beberapa masalah sebelumnya, saya akhirnya merilis 1.0.2 (4) sebagai aplikasi Mac Catalyst yang sesuai dengan 1.0.2 (1) di iOS. Sekarang ketika mencoba untuk merilis 1.0.3 (1) pada keduanya, aplikasi gagal verifikasi di MacOS karena nomor build, sementara lolos verifikasi di iOS.
Saya kira sekarang saya merilis aplikasi yang sama di iOS dan MacOS secara rutin, saya akan mengadopsi nomor build yang sesuai dengan tanggal, seperti 20200111 dan kenaikan dengan titik desimal jika saya perlu mengubah nomor build dalam rilis tertentu.
sumber
Anda perlu menaikkan keduanya .
Saat mengupload versi baru, Anda perlu membuat versi baru di iTunes Connect, yang secara otomatis akan lebih tinggi dari rilis sebelumnya. Versi ini di iTunes Connect akan mengharapkan biner dengan nomor versi yang sama, oleh karena itu
CFBundleShortVersionString
perlu ditambah.Jika Anda memperbarui versinya tetapi lupa menaikkan
CFBundleVersion
, Anda akan mengalami kesalahan selama mengunggah. Lihat jawaban dan tangkapan layar pkamb.Untuk detail tentang
CFBundleShortVersionString
danCFBundleVersion
, silakan lihat: https://stackoverflow.com/a/31921249/936957sumber
Saya dapat mengonfirmasi, baru saja mencoba kedua cara, bahwa urutan versi dan nomor build seperti ...
... akan diterima untuk aplikasi iOS, tetapi untuk aplikasi Mac (Catalyst) mengembalikan kesalahan ini:
Versi Mac dan nomor build harus seperti ...
Untuk iOS, saya biasa memasukkan nomor build sebagai nomor versi ditambah digit keempat, seperti ...
... tapi itu juga tidak diperbolehkan untuk aplikasi Mac. Ketika saya mencoba mengirimkan aplikasi Mac (Catalyst) pertama saya, Apple hanya akan menerima nomor build dengan tiga digit atau kurang:
Jadi saya mengubah ke satu nomor yang bertambah untuk setiap build dan terus bertambah di nomor versi.
sumber
Saya sedang bersiap untuk merilis aplikasi Mac App Store baru. Menggunakan format CalVer
YEAR.release (build)
.Saya upload beberapa membangun:
2020.0 (1)
,2020.0 (2)
, dll saya akhirnya diserahkan2020.0 (8)
untuk App Store Ulasan. Itu lulus tinjauan dan dalam status Tertunda Rilis Pengembang .Saya ingin memperbaiki beberapa hal sebelum rilis, jadi saya menambahkan membangun baru untuk rilis kereta yang sama:
2020.0 (9)
.Itu menghasilkan kesalahan:
yang menjengkelkan karena
2020.0
versi saya tidak pernah benar-benar dirilis . Dari jawaban yang diterima untuk pertanyaan ini, saya mendapat kesan bahwa hingga aplikasi tersedia di App Store, Anda dapat terus merilis versi baru dengan versi yang sama.Solusinya adalah bahwa "rangkaian rilis" (Versi Sama + Versi Baru) tidak dapat diperbarui jika status aplikasi Menunggu Rilis Pengembang . Rilis build yang ada lalu tingkatkan versinya, atau Batalkan Rilis ini di App Store Connect untuk memungkinkan upload lebih lanjut untuk rangkaian rilis ini.
sumber
AFAIK, di luar kepala saya, Anda hanya perlu menaikkan nomor build
CFBundleVersion
. Menambahkan string versi pendek tidak selalu diperlukan, meskipun Anda mungkin harus menaikkannya, karena hal itu memberi tahu pengguna bahwa aplikasi tersebut baru. Apple mengatakan bahwa penomoran harus mengikuti konvensi pembuatan versi perangkat lunak tradisional, dan iTunes Connect mungkin mengeluh jika Anda mencoba mengunggah ulang versi yang sudah ada.Singkat cerita, ini mungkin berhasil, tetapi mungkin tidak.
sumber
CFBundleShortVersionString
tidak perlu ditambahkan, versi untuk pengguna yang "sama" dapat diunggah ke App Store beberapa kali?