Apa perbedaan antara "nomor versi" di iTunes Connect, "versi paket", "string versi paket" di Xcode?

94

Dokumen Apple mungkin lebih jelas tentang cara mengirimkan versi pembaruan.

Seperti yang ditanyakan dalam judul, Apa perbedaannya

  1. nomor versi di itunes connect (yang harus Anda berikan saat mengirimkan pembaruan)
  2. versi bundel di xcode
  3. versi bundel string, pendek

Apakah mereka terkait dengan cara apa pun?

Eugene
sumber
12
Apple dan istilah / bidangnya yang membingungkan ...: /
BoltClock
Silakan lihat jawaban saya sebelumnya: stackoverflow.com/a/31921249/936957
Yunus Nedim Mehel

Jawaban:

143

Ya, mereka saling berhubungan. Semuanya mengacu pada versi aplikasi Anda.

  • iTunes Connect
    Ini adalah nomor versi yang ditampilkan di App Store; Ini harus berupa nomor versi murni seperti1.2.3

  • Versi Bundle (CFBundleVersion)
    Ini tidak harus berupa nomor versi murni. Ini bisa seperti 12345atau 1.2.3 (Build 12345AB). Ini ditampilkan di jendela Tentang untuk aplikasi Mac OS X misalnya dan sering kali lebih merupakan "Nomor Bangun" daripada "Nomor Versi".

  • Bundel Version String (CFBundleShortVersionString) Nilai ini digunakan sebagai nomor versi "nyata". Ini harus string yang sama seperti yang digunakan untuk versi di iTunes Connect .

Pembaruan:
Seperti yang ditunjukkan oleh @snlehton, CFBundleVersion harus berupa nomor versi murni seperti 1.2.3ketika Anda ingin mengunggah aplikasi Anda ke App Store (iOS).

Fabian Kreiser
sumber
3
Untuk pengujian, Anda menyetel string versi paket ke nomor versi final seperti 1.2.3dan kemudian menaikkan versi paket untuk setiap build.
Fabian Kreiser
19
INI SALAH CFBundleVersion harus ada di xyz, jika tidak mengunggah build akan gagal! tautan
snlehton
2
Saya baru-baru ini mengirimkan build dengan CFBundleVersion dengan "1.0.2 RC3" dan memantul dengan pesan error: "Bundel tidak valid. CFBundleVersion kunci dalam file Info.plist harus berupa daftar bilangan bulat non-negatif yang dipisahkan oleh periode." Saya rasa nn.n.nxnnn adalah format yang benar untuk digunakan, tetapi belum mencobanya.
snlehton
3
CFBundleVersion 1235 di sini, tidak ada masalah
Piotr Tomasik
4
Kebingungan di sini adalah karena CFBundleShortVersionString adalah opsional dan ketika disetel itu mengubah untuk apa CFBundleVersion digunakan. Jika hanya menyertakan CFBundleVersion maka itu harus nomor versi publik, misalnya 1.0. Namun jika CFBundleVersion dan CFBundleShortVersionString disetel maka CFBundleShortVersionString sekarang harus menggunakan nomor versi publik, misalnya 1.0. Dan sekarang CFBundleVersion berubah menjadi nomor build, yang biasanya berupa bilangan bulat tunggal misalnya 374629. Mudah-mudahan ini menyelesaikannya.
malhal
27

Ya, mereka terkait tetapi definisi mereka tergantung pada bagaimana mereka digunakan.

  • Versi iTunes Connect

    Selalu harus berupa nomor versi, misalnya 1.0

Mode penggunaan 1 - Hanya CFBundleVersion yang diatur

  • Versi Bundel (CFBundleVersion)

    Harus berupa nomor versi, misalnya 1.0. Harus cocok dengan Versi iTunes Connect.

Mode penggunaan 2 - CFBundleVersion dan CFBundleShortVersionString disetel

  • Versi Bundel (CFBundleVersion)

    Harus berupa nomor build, misalnya bilangan bulat tunggal seperti 435163.

  • Bundel String Versi Pendek (CFBundleShortVersionString)

    Harus berupa nomor versi, misalnya 1.0. Harus cocok dengan Versi iTunes Connect.

Mode penggunaan 2 adalah cara terbaik untuk melakukannya. Berikut beberapa contoh nomor untuk jalur peningkatan aplikasi:

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

Catatan tambahan tentang nomor versi: Jika Anda mengirimkan pembaruan kecil (misalnya perbaikan bug) ke aplikasi Anda, Anda tidak boleh melewatkan titik di nomor versi, misalnya selalu gunakan 1.0.1 dan TIDAK PERNAH 1.01 atau Anda berisiko tidak dapat menggunakan nomor versi tertentu di masa mendatang karena tidak mungkin untuk menaikkannya.

malhal
sumber
2
Tabel itu sendiri melakukan pekerjaan terbaik dalam menjelaskan bagaimana kedua angka ini terkait dan digunakan dalam praktik. Terima kasih.
Joshua Pinter
Harus cocok dengan Versi iTunes Connect. Ini bukan persyaratan yang sulit (bahkan jika itu HARUS)
Marco Pappalardo
13

Ya, semuanya terkait.

Nomor Versi di itunesconnect adalah nomor versi yang perlu Anda berikan. Misalnya, 2.1.1 atau 3.1.2 dll. Ini juga harus sama dengan CFBundleShortVersionString .

Versi Bundel Dalam Xcode ( CFBundleVersion ) hanya mewakili nomor Build yang mengidentifikasi iterasi (dirilis atau tidak dirilis) aplikasi.

Versi bundel string, pendek ( CFBundleShortVersionString ) adalah angka yang terdiri dari tiga bilangan bulat yang dipisahkan oleh titik. Yang pertama mewakili pembaruan utama aplikasi, seperti pembaruan yang mengimplementasikan fitur baru atau perubahan besar. Bilangan bulat kedua menunjukkan revisi yang menerapkan fitur yang kurang menonjol. Bilangan bulat ketiga mewakili rilis pemeliharaan.

mayuur
sumber
3
Sebenarnya, "Kumpulan versi string, pendek" tidak harus berupa TIGA angka yang dipisahkan oleh titik. Saya pikir "1" dan "1.1" juga valid.
Nicolas Miari
sebenarnya dari pengujian Nomor Versi saya di itunesconnect sepenuhnya independen dari CFBundleVersion dan ShortVersion. Jadi Anda bahkan dapat membuatnya berbeda
Marco Pappalardo
11

Berhati-hatilah dengan CFBundleVersion . Ini bukan hanya nomor produksi produksi. Nilai ini diperiksa oleh Apple selama proses pengunggahan biner, dan dapat gagal.

Pastikan Anda menyetel CFBundleVersion dengan nilai CFBundleShortVersionString saat Anda membuat rilis untuk dikirimkan.

Lihat posting ini tentang itu

aponaute
sumber
3
Ini adalah info yang benar, jawaban yang diterima sebenarnya salah.
snlehton
9
Ini tidak benar, CFBundleVersiontidak harus cocok CFBundleShortVersionString. Misalnya, jika Anda melihat file .ipa saat ini untuk Chrome (di app store sekarang), file tersebut memiliki "34.0.1847.18" untuk CFBundleVersiondan "34.1847.18" untuk CFBundleShortVersionString.
progrmr
6
Tidak ada dokumentasi yang mengatakan bahwa CFBundleVersion dan CFBundleShortVersionString harus sama.
Toydor
8

Jawaban yang diterima adalah cara terbaik - cukup tambahkan ini sebagai contoh.

Untuk rilis terakhir kami, "Bundle Version String, short" diperlukan, dan saya melanjutkan dan mencocokkannya dengan nomor versi Bundle (1.2.8 untuk aplikasi kami).

Saya kemudian mengaktifkan Testflight, dan membuat versi yang menunggu tinjauan Apple (1.2.8) tersedia untuk penguji internal kami. Namun penguji menemukan masalah yang perlu diperbaiki, dan kami menghapus biner di tempatnya. Saat mengupload build baru, kami mendapat error yang menunjukkan versi build sudah diupload.

Setelah membaca beberapa tautan SO dan dokumen Apple, pemahaman saya adalah membuat versi bundel: 1.2.8.001, sambil mempertahankan versi bundel-pendek seperti itu. Jika build baru diperlukan, kami menaikkan versi paket ke 1.2.8.002.

Catatan: upload diterima, dan build muncul sebagai "1.2.8.001" di bawah pra-rilis. Nomor versi tetap 1.2.8.

ahash
sumber
3

Jawaban yang diterima dari tautan ini berisi detail yang bagus :: Nomor versi / versi aplikasi iOS mana yang HARUS ditambahkan setelah rilis App Store?

Dari apple docs

CFBundleVersion (versi Bundle)

CFBundleVersion (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.

CFBundleShortVersionString (String versi bundel, pendek)

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. Bilangan bulat pertama mewakili revisi besar pada aplikasi, seperti revisi yang menerapkan fitur baru atau perubahan besar. Bilangan bulat kedua menunjukkan revisi yang menerapkan fitur yang kurang menonjol. Bilangan bulat ketiga mewakili rilis pemeliharaan.

Nilai untuk kunci ini berbeda dari nilai untuk CFBundleVersion, yang mengidentifikasi iterasi (dirilis atau tidak dirilis) aplikasi. Kunci ini dapat dilokalkan dengan memasukkannya ke dalam file InfoPlist.strings Anda.

menghafal
sumber