Saya memiliki aplikasi yang saya kembangkan dengan Xcode 3 dan baru-baru ini mulai mengedit dengan Xcode 4. Dalam ringkasan target saya memiliki formulir target aplikasi iOS dengan bidang: pengidentifikasi, versi, build, perangkat, dan target penyebaran. Kolom versi kosong dan bidang build adalah 3.4.0 (yang cocok dengan versi aplikasi sejak saya masih mengedit dengan Xcode 3).
Pertanyaan saya adalah:
Apa perbedaan antara versi dan bidang yang dibangun?
Mengapa bidang versi kosong setelah saya memutakhirkan ke Xcode 4?
Jawaban:
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) danCFBundleVersion
(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}
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.
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.
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 keSettings.bundle/Root*.plist
file Anda .Ini diperpanjang dari artikel how-to di sini .
Dalam Xcode 4.2 - 5.0:
/bin/bash
.Salin dan tempel berikut ini ke area skrip untuk angka bilangan bulat integer:
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:Perhatikan bahwa dengan
agvtool
metode ini Anda mungkin masih mendapatkan bangunan gagal / dibatalkan secara berkala tanpa kesalahan. Untuk alasan ini, saya tidak merekomendasikan penggunaanagvtool
dengan skrip ini.Namun demikian, dalam fase Run Script Anda, Anda dapat menggunakan skrip berikut:
The
next-version
argumen increment nomor membangun (bump
juga alias untuk hal yang sama), dan-all
updateInfo.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 bawahPreferenceSpecifiers
array dalam file plist Anda, jadi untuk indeks berbasis 0, itulah pengaturan preferensi ke-3 dalam array.Jika Anda menggunakan
agvtool
alih-alih membacaInfo.plist
secara langsung, Anda dapat menambahkan yang berikut ke skrip Anda sebagai gantinya:Dan jika Anda memiliki aplikasi universal untuk iPad & iPhone, maka Anda juga dapat mengatur pengaturan untuk file iPhone:
sumber
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") dec=$((0x$buildNumber)) buildNumber=$(($dec + 1)) hex=$(printf "%X" $buildNumber) /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $hex" "$INFOPLIST_FILE"
(Hanya meninggalkan ini di sini untuk referensi saya sendiri.) Ini akan menampilkan versi dan membangun untuk bidang "versi" dan "membangun" yang Anda lihat dalam target Xcode:
Dalam Swift
sumber
alloc
/init
string, yang mempertahankan string, tetapi Anda tidak melepaskannya. Pada objek yang Anda kembali dari suatu metode, Anda umumnya harus menggunakan metode kenyamanan sehingga string tersebut autoreleased secara otomatis, atau panggilanautorelease
. Baik:return [NSString stringWithFormat:@"%@ build %@", version, build];
ATAUreturn [[[NSString alloc] initWithFormat:@"%@ build %@", version, build] autorelease];
Nomor Bangun adalah nomor internal yang menunjukkan keadaan aplikasi saat ini. Ini berbeda dari nomor versi karena biasanya tidak menghadap ke pengguna dan tidak menunjukkan perbedaan / fitur / peningkatan seperti yang biasanya dilakukan oleh nomor versi.
Pikirkan seperti ini:
CFBundleVersion
): Jumlah build. Biasanya Anda memulai ini pada 1 dan meningkat sebesar 1 dengan masing-masing membangun aplikasi. Dengan cepat memungkinkan untuk perbandingan yang membangun lebih baru dan itu menunjukkan rasa kemajuan basis kode. Ini bisa sangat berharga ketika bekerja dengan QA dan perlu memastikan bug dicatat terhadap build yang tepat.CFBundleShortVersionString
): Nomor yang menghadap pengguna yang Anda gunakan untuk menunjukkan versi aplikasi Anda ini. Biasanya ini mengikuti skema versi Major.minor (mis. MyAwesomeApp 1.2) untuk memberi tahu pengguna rilis mana yang merupakan pembaruan pemeliharaan yang lebih kecil dan yang merupakan fitur baru yang sangat penting.Untuk menggunakan ini secara efektif dalam proyek Anda, Apple menyediakan alat hebat yang disebut
agvtool
. Saya sangat merekomendasikan menggunakan ini karena JAUH lebih sederhana daripada scripting perubahan plist. Ini memungkinkan Anda untuk dengan mudah mengatur nomor build dan versi pemasaran. Ini sangat berguna ketika membuat skrip (misalnya, dengan mudah memperbarui nomor build pada setiap build atau bahkan menanyakan apa nomor build saat ini). Ia bahkan dapat melakukan hal-hal yang lebih eksotis seperti menandai SVN Anda untuk Anda ketika Anda memperbarui nomor build.Untuk menggunakannya:
agvtool new-version 1
(setel nomor Bangun ke 1)agvtool new-marketing-version 1.0
(atur versi Pemasaran ke 1.0)Lihat halaman manual
agvtool
untuk satu ton info yang bagussumber
agvtool
Versi Aplikasi iPhone Mudah dengan agvtoolSkrip untuk menambah angka build dalam jawaban di atas tidak berfungsi untuk saya jika nomor build adalah nilai floating point, jadi saya memodifikasinya sedikit:
sumber
Nomor rilis pemasaran adalah untuk pelanggan, yang disebut nomor versi . Ini dimulai dengan 1.0 dan naik untuk pembaruan besar ke 2.0 , 3.0 , untuk pembaruan kecil ke 1.1 , 1.2 dan untuk perbaikan bug ke 1.0.1 , 1.0.2 . Jumlah ini berorientasi pada rilis dan fitur baru.
Jumlah build sebagian besar adalah jumlah internal build yang telah dibuat sampai saat itu. Tetapi beberapa menggunakan nomor lain seperti nomor cabang repositori. Angka ini harus unik untuk membedakan bangunan yang hampir sama.
Seperti yang Anda lihat, nomor build tidak perlu dan terserah Anda nomor build mana yang ingin Anda gunakan. Jadi, jika Anda memperbarui
Xcode
ke versi utama, bidang build kosong. Kolom versi mungkin tidak kosong !.Untuk mendapatkan nomor build sebagai
NSString
variabel:Untuk mendapatkan nomor versi sebagai
NSString
variabel:Jika Anda ingin keduanya dalam satu
NSString
:Ini diuji dengan Xcode Versi 4.6.3 (4H1503) . Nomor build sering ditulis dalam kurung / kurung kurawal. Nomor build dalam heksadesimal atau desimal.
Di Xcode Anda dapat secara otomatis menambah nomor build sebagai angka desimal dengan menempatkan yang berikut ini dalam
Run script
fase build dalam pengaturan proyekUntuk nomor build heksadesimal gunakan skrip ini
sumber
Terima kasih kepada @nekno dan @ ale84 untuk jawaban yang bagus.
Namun, saya memodifikasi skrip @ ale84 sedikit demi meningkatkan angka bangun untuk floating point.
nilai incl dapat diubah sesuai dengan persyaratan format mengambang Anda. Untuk misalnya: jika termasuk = .01, format output akan menjadi ... 1.19, 1.20, 1.21 ...
sumber
Cara lain adalah dengan mengatur nomor versi di
appDelegate
didFinishLaunchingWithOptions
:sumber