Apple semacam mengatur ulang / repurposed bidang.
Selanjutnya, jika Anda melihat pada tab Info untuk Target Aplikasi Anda, Anda harus menggunakan "String versi bundel, pendek" sebagai Versi Anda (mis., 3.4.0) dan "Versi bundel" sebagai Build Anda (mis. 500 atau 1A500 ). Jika Anda tidak melihat keduanya, Anda dapat menambahkannya. Mereka akan memetakan ke Versi dan Bangun kotak teks yang tepat pada tab Ringkasan; mereka adalah nilai yang sama.
Saat melihat tab Info, jika Anda mengklik kanan dan memilih Show Raw Keys / Values , Anda akan melihat nama sebenarnya CFBundleShortVersionString
(Versi) dan CFBundleVersion
(Build).
Versi ini biasanya menggunakan bagaimana Anda tampaknya telah menggunakannya dengan Xcode 3. Saya tidak yakin pada level apa Anda bertanya tentang perbedaan Versi / Build, jadi saya akan menjawabnya secara filosofis.
Ada berbagai macam skema, tetapi yang populer adalah:
{MajorVersion}. {MinorVersion}. {Revisi}
- Versi utama - Perubahan besar, desain ulang, dan perubahan fungsi
- Versi minor - Peningkatan minor, penambahan fungsi
- Revisi - Nomor tambalan untuk perbaikan bug
Kemudian Build digunakan secara terpisah untuk menunjukkan jumlah total build untuk rilis atau untuk seluruh masa pakai produk.
Banyak pengembang memulai Build number pada 0, dan setiap kali mereka membangun mereka menambah jumlahnya dengan satu, meningkat selamanya. Dalam proyek saya, saya memiliki skrip yang secara otomatis meningkatkan jumlah build setiap kali saya membangun. Lihat instruksi untuk itu di bawah ini.
- Rilis 1.0.0 mungkin build 542. Butuh 542 build untuk mencapai rilis 1.0.0.
- Rilis 1.0.1 mungkin versi 578.
- Rilis 1.1.0 mungkin dibuat 694.
- Rilis 2.0.0 mungkin membangun 949.
Pengembang lain, termasuk Apple, memiliki nomor Build yang terdiri dari versi utama + versi minor + jumlah build untuk rilis. Ini adalah nomor versi perangkat lunak yang sebenarnya, yang bertentangan dengan nilai yang digunakan untuk pemasaran.
Jika Anda masuk ke menu Xcode > Tentang Xcode , Anda akan melihat Versi dan nomor Bangun. Jika Anda menekan tombol More Info ... Anda akan melihat banyak versi yang berbeda. Karena Info lebih lanjut ... tombol telah dihapus di Xcode 5, informasi ini juga tersedia dari Software> Developer bagian dari Sistem Informasi aplikasi, tersedia dengan membuka Apel menu> Tentang Mac ini > Sistem Laporan ... .
Misalnya, Xcode 4.2 (4C139). Versi pemasaran 4.2 adalah Build versi mayor 4, Build minor versi C, dan Build number 139. Rilis berikutnya (mungkin 4.3) kemungkinan akan menjadi Build release 4D, dan Build number akan dimulai dari 0 dan selisih dari sana.
Nomor Versi iPhone Simulator / Build adalah cara yang sama, seperti iPhone, Mac, dll.
- 3.2: (7W367a)
- 4.0: (8A400)
- 4.1: (8B117)
- 4.2: (8C134)
- 4.3: (8H7)
Pembaruan : Dengan permintaan, berikut adalah langkah-langkah untuk membuat skrip yang berjalan setiap kali Anda membangun aplikasi di Xcode untuk membaca nomor Build, menambahkannya, dan menulisnya kembali ke file aplikasi {App}-Info.plist
. Ada langkah-langkah tambahan opsional jika Anda ingin menulis versi / nomor build Anda ke Settings.bundle/Root*.plist
file Anda .
Ini diperpanjang dari artikel how-to di sini .
Dalam Xcode 4.2 - 5.0:
- Muat proyek Xcode Anda.
- Di panel sebelah kiri, klik proyek Anda di bagian paling atas hierarki. Ini akan memuat editor pengaturan proyek.
- Di sisi kiri panel jendela tengah, klik aplikasi Anda di bawah judul TARGET . Anda perlu mengkonfigurasi pengaturan ini untuk setiap target proyek.
- Pilih tab Bangun Fase .
- Di Xcode 4, di kanan bawah, klik tombol Add Build Phase dan pilih Add Run Script .
- Dalam Xcode 5, pilih menu Editor > Tambah Fase Pembuatan > Tambahkan Fase Pembuatan Skrip Run .
- Seret dan taruh fase Run Script yang baru untuk memindahkannya tepat sebelum fase Copy Bundle Resources (ketika file app-info.plist akan digabungkan dengan aplikasi Anda).
- Dalam baru Run Script fase, mengatur Shell :
/bin/bash
.
Salin dan tempel berikut ini ke area skrip untuk angka bilangan bulat integer:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Seperti yang ditunjukkan oleh @Bdebeez, Apple Generic Versioning Tool ( agvtool
) juga tersedia. Jika Anda lebih suka menggunakannya, maka ada beberapa hal yang harus diubah terlebih dahulu:
- Pilih tab Bangun Pengaturan .
- Di bawah bagian Versi , setel Versi Proyek Saat Ini ke nomor build awal yang ingin Anda gunakan, misalnya, 1 .
- Kembali pada tab Build Phases , seret-dan-jatuhkan fase Run Script Anda setelah fase Copy Bundle Resources untuk menghindari kondisi balapan saat mencoba membangun dan memperbarui file sumber yang menyertakan nomor build Anda.
Perhatikan bahwa dengan agvtool
metode ini Anda mungkin masih mendapatkan bangunan gagal / dibatalkan secara berkala tanpa kesalahan. Untuk alasan ini, saya tidak merekomendasikan penggunaan agvtool
dengan skrip ini.
Namun demikian, dalam fase Run Script Anda, Anda dapat menggunakan skrip berikut:
"${DEVELOPER_BIN_DIR}/agvtool" next-version -all
The next-version
argumen increment nomor membangun ( bump
juga alias untuk hal yang sama), dan -all
update Info.plist
dengan nomor membangun baru.
Dan jika Anda memiliki bundel Pengaturan tempat Anda menampilkan Versi dan Bangun, Anda dapat menambahkan berikut ini di akhir skrip untuk memperbarui versi dan membangun. Catatan: Ubah PreferenceSpecifiers
nilainya agar sesuai dengan pengaturan Anda. PreferenceSpecifiers:2
berarti melihat item pada indeks 2 di bawah PreferenceSpecifiers
array dalam file plist Anda, jadi untuk indeks berbasis 0, itulah pengaturan preferensi ke-3 dalam array.
productVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
Jika Anda menggunakan agvtool
alih-alih membaca Info.plist
secara langsung, Anda dapat menambahkan yang berikut ke skrip Anda sebagai gantinya:
buildNumber=$("${DEVELOPER_BIN_DIR}/agvtool" what-version -terse)
productVersion=$("${DEVELOPER_BIN_DIR}/agvtool" what-marketing-version -terse1)
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
Dan jika Anda memiliki aplikasi universal untuk iPad & iPhone, maka Anda juga dapat mengatur pengaturan untuk file iPhone:
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root~iphone.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root~iphone.plist