Bagaimana saya bisa membatasi fase pembuatan "Run Script" untuk konfigurasi rilis saya?

138

Saya memiliki skrip shell yang ingin saya jalankan di akhir fase build target saya. Namun, saya ingin skrip ini hanya berjalan ketika saya membangun dengan konfigurasi rilis . Bagaimana ini bisa dilakukan? Terima kasih!

Reed Olsen
sumber

Jawaban:

295
if [ "${CONFIGURATION}" = "Release" ]; then
  echo Do something really release-like
fi

Skrip akan berjalan di akhir setiap konfigurasi, tetapi skrip ini tidak akan melakukan apa pun dalam kasus ini kecuali jika konfigurasinya adalah Release (dengan asumsi semua yang dilakukannya terkandung dalam blok uji).

Jason Coco
sumber
1
Saya baru saja menemukan itu tidak berfungsi dengan nama konfigurasi multi-worded. Ini bekerja dengan "Rilis" tetapi tidak dengan "Internal Beta".
Hedin
4
@Hedin - itu hanya bash; jika Anda memiliki variabel multi-kata, Anda harus mengelilingi variabel dalam tanda kutip. Jadi $ {CONFIGURATION} menjadi "$ {CONFIGURATION}". Saya akan memperbarui jawabannya untuk memasukkan itu.
Jason Coco
15
Saya memiliki konfigurasi 'Debug', 'Rilis' (untuk Instrumen), 'Ad Hoc' dan 'App Store' (dengan penandatanganan kode yang berbeda), jadi saya mengubahnya untuk if [ "${CONFIGURATION}" != "Debug" ]; then....
Nicolas Miari
1
Untuk kondisi if saya ingin menggunakan #define TRUE / FALSE yang disimpan dalam file .pch .. bagaimana saya referensi dalam kode skrip?
newton_guima
2
Apakah hal yang sama dapat dilakukan dengan flag pra-prosesor?
Justin Vallely
15

Cara termudah untuk melakukan ini, adalah mencentang kotak "Jalankan skrip hanya saat menginstal".

Menno
sumber
4
"Instalasi debug pada perangkat asli (build & run dari Xcode) tidak dihitung sebagai" menginstal ". Skrip run hanya berjalan saat pengarsipan (diuji dengan Xcode 9)." stackoverflow.com/questions/5913199/…
darkheartfelt
2
Ini tidak akan berfungsi jika Anda ingin membangun aplikasi dalam Releasekonfigurasi tanpa mengarsipkannya. Pertanyaannya secara eksplisit tentang Releasekonfigurasi.
Legonaftik