ดังนั้นฉันจึงได้ไตร่ตรองคำถามเดียวกันและใช้แนวคิดบางอย่างจากโพสต์ก่อนหน้านี้ซึ่งบางส่วนเผยแพร่แอปGoogleServices-Info.plist
สำหรับทุกสภาพแวดล้อมในทุกแอปและนั่นเป็นเรื่องที่น่ากังวลเล็กน้อย
ฉันได้หาโซลูชันที่ขยายได้ซึ่งคัดลอกGoogleSerives-Info.plist
ไฟล์ในเวลาสร้าง ยิ่งไปกว่านั้นวิธีนี้ยังรองรับสภาพแวดล้อมได้มากเท่าที่คุณต้องการด้วยความสามารถในการปรับแต่งและทำตามหลักการง่ายๆทำให้ง่ายต่อการจัดการ
อันดับแรกและสำคัญที่สุดฉันมีสภาพแวดล้อมสามแบบdebug
(สำหรับการทำงานในโปรแกรมจำลองและการดีบักของอุปกรณ์และการตัดรหัสอย่างกระตือรือร้น) staging
(สำหรับการปรับใช้เพื่อทดสอบเที่ยวบิน) และrelease
สำหรับการผลิต
ขั้นตอนที่หนึ่งคือการสร้างการกำหนดค่าของคุณ:
เลือก "Product" -> "Scheme" -> "Edit Scheme" และทำซ้ำ / สร้างใหม่ตามต้องการ สำรวจแต่ละโครงการและกำหนดการกำหนดค่าตามลำดับจากเมนูแบบเลื่อนลง "Build Configuration" ในแต่ละหมวดหมู่:
ฉันก้าวไปอีกขั้นและยกเลิกการเลือก "run" สำหรับ Schemes ที่ต้องแจกจ่ายเช่น release และ staging และยกเลิกการเลือก "archive" เพื่อแก้ไขข้อบกพร่อง คุณควรทำในสิ่งที่เหมาะสมสำหรับคุณ
ภายใต้ขั้นตอนการสร้างให้เพิ่ม run scrip ต่อไปนี้ ( CONFIGURATIONS_FOLDER
สามารถปรับแต่งตัวแปรได้ตามต้องการ - ให้แน่ใจว่าคุณใช้ชื่อโฟลเดอร์เดียวกันในขั้นตอนถัดไป):
# Get a reference to the folder which contains the configuration subfolders.
CONFIGURATIONS_FOLDER=Firebase
# Get a refernce to the filename of a 'GoogleService-Info.plist' file.
GOOGLESERVICE_INFO_PLIST=GoogleService-Info.plist
# Get a reference to the 'GoogleService-Info.plist' for the current configuration.
GOOGLESERVICE_INFO_PLIST_LOCATION=${PROJECT_DIR}/${TARGET_NAME}/${CONFIGURATIONS_FOLDER}/${CONFIGURATION}/${GOOGLESERVICE_INFO_PLIST}
# Check if 'GoogleService-Info.plist' file for current configuration exist.
if [ ! -f $GOOGLESERVICE_INFO_PLIST_LOCATION ]
then
echo "No '${GOOGLESERVICE_INFO_PLIST}' file found for the configuration '${CONFIGURATION}' in the configuration directory '${PROJECT_DIR}/${TARGET_NAME}/${CONFIGURATIONS_FOLDER}/${CONFIGURATION}'."
exit 1
fi
# Get a reference to the destination location for the GoogleService-Info.plist.
GOOGLESERVICE_INFO_PLIST_DESTINATION=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
# Copy 'GoogleService-Info.plist' for current configution to destination.
cp "${GOOGLESERVICE_INFO_PLIST_LOCATION}" "${GOOGLESERVICE_INFO_PLIST_DESTINATION}"
echo "Successfully coppied the '${GOOGLESERVICE_INFO_PLIST}' file for the '${CONFIGURATION}' configuration from '${GOOGLESERVICE_INFO_PLIST_LOCATION}' to '${GOOGLESERVICE_INFO_PLIST_DESTINATION}'."
ในโฟลเดอร์การกำหนดค่าที่คุณเลือก ("Firebase" ในตัวอย่างด้านบน) ซ้อนโฟลเดอร์สำหรับการกำหนดค่าแต่ละรายการที่มีชื่อเหมือนกันทุกประการกับการกำหนดค่าตามลำดับ (คำนึงถึงตัวพิมพ์เล็กและใหญ่) ซึ่งภายในจะวางGoogleServices-Info.plist
ไฟล์ตามลำดับดังนี้:
สุดท้าย แต่ไม่GoogleServices-Info.plist
ท้ายสุดฉันต้องการให้แน่ใจว่าไม่ได้เพิ่มระดับรูทลงในโปรเจ็กต์โดยไม่ได้ตั้งใจดังนั้นฉันจึงเพิ่มสิ่งต่อไปนี้ใน. gitignore ของฉัน
# Ignore project level GoogleService-Info.plist
/[Project Name]/GoogleService-Info.plist