ฉันจะ จำกัด เฟสบิวด์“ Run Script” ให้อยู่ในคอนฟิกูเรชันของรุ่นได้อย่างไร


141

ฉันมีเชลล์สคริปต์ที่ฉันต้องการเรียกใช้ในตอนท้ายของเฟสการสร้างเป้าหมายของฉัน อย่างไรก็ตามฉันต้องการให้สคริปต์นี้ทำงานเมื่อฉันสร้างด้วยการกำหนดค่ารุ่นเท่านั้น จะทำได้อย่างไร? ขอบคุณ!

คำตอบ:


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

สคริปต์จะทำงานในตอนท้ายของทุกการกำหนดค่า แต่จะไม่ทำอะไรในกรณีนี้เว้นแต่การกำหนดค่าจะเป็น Release (สมมติว่าทุกอย่างมีอยู่ในบล็อกทดสอบ)


1
ฉันเพิ่งค้นพบว่ามันใช้ไม่ได้กับชื่อการกำหนดค่าหลายคำ ใช้งานได้กับ "Release" แต่ใช้กับ "Internal Beta" ไม่ได้
Hedin

4
@ เฮดิน - นั่นเป็นเพียงการทุบตี; หากคุณมีตัวแปรหลายคำคุณต้องล้อมรอบตัวแปรในเครื่องหมายคำพูด ดังนั้น $ {CONFIGURATION} จึงกลายเป็น "$ {CONFIGURATION}" ฉันจะอัปเดตคำตอบเพื่อรวมไว้ด้วย
Jason Coco

16
ฉันมี 'Debug', 'ที่วางจำหน่าย' (สำหรับเครื่องดนตรี) 'Ad Hoc และ configs' App Store (ด้วยการลงนามรหัสที่แตกต่างกัน) if [ "${CONFIGURATION}" != "Debug" ]; then...ดังนั้นผมเปลี่ยนมัน
Nicolas Miari

1
สำหรับเงื่อนไข if ฉันต้องการใช้ #define TRUE / FALSE ที่เก็บไว้ในไฟล์. pch .. ฉันจะอ้างอิงในโค้ดสคริปต์ได้อย่างไร
newton_guima

2
สิ่งเดียวกันนี้สามารถทำได้ด้วยแฟล็กก่อนโปรเซสเซอร์หรือไม่?
Justin Vallely

17

วิธีที่ง่ายที่สุดคือการเลือกช่องทำเครื่องหมาย "เรียกใช้สคริปต์เมื่อติดตั้งเท่านั้น"



4
"การติดตั้งดีบักบนอุปกรณ์จริง (สร้างและเรียกใช้จาก Xcode) ไม่นับเป็นการ" ติดตั้ง "สคริปต์การรันจะทำงานเมื่อเก็บถาวรเท่านั้น (ทดสอบด้วย Xcode 9)" stackoverflow.com/questions/5913199/…
darkheartfelt

2
จะใช้ไม่ได้หากคุณต้องการสร้างแอปในReleaseการกำหนดค่าโดยไม่เก็บถาวร คำถามเกี่ยวกับReleaseการกำหนดค่าอย่างชัดเจน
Legonaftik
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.