Bu yüzden aynı soruyu düşündüm ve daha önceki gönderilerden bazı fikirleri kullanarak, bazıları GoogleServices-Info.plisttüm uygulamalarda tüm ortamlar için uygulamalar yayınlıyor ve bu biraz endişe verici.
GoogleSerives-Info.plistDosyayı derleme zamanında kopyalayan genişletilebilir bir çözüm buldum . Dahası, bu yaklaşım, basit bir kuralı özelleştirme ve takip etme becerisiyle istediğiniz kadar ortamı destekleyerek yönetimi kolaylaştırır.
Birincisi ve en önemlisi üç ortama debugsahibim , (simülatörde çalıştırmak ve cihazda hata ayıklamak ve aktif olarak kodu kesmek stagingiçin ), (uçuşu test etmek için konuşlandırmak için) ve releaseüretim için.
Birinci adım, yapılandırmalarınızı oluşturmaktır:

"Ürün" -> "Şema" -> "Şemayı Düzenle" yi seçin ve gerektiği gibi çoğaltın / yenisini oluşturun. Her Şemayı gözden geçirin ve kategorilerin her birinde "Yapı Yapılandırması" açılır menüsünden ilgili yapılandırmasını atayın:

Bir adım daha ileri gidiyorum ve dağıtılması gereken Şemalar için "çalıştır" seçeneğinin işaretini kaldırıyorum, yani serbest bırakma ve aşamalandırma ve tersine hata ayıklama için "arşiv" işaretini kaldırıyorum. Senin için mantıklı olanı yapmalısın.

Derleme aşamaları altında aşağıdaki çalıştırma komut dosyasını ekleyin ( CONFIGURATIONS_FOLDERdeğişken istenildiği gibi özelleştirilebilir - sadece bir sonraki adımda aynı klasör adını kullandığınızdan emin olun):
# 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}'."

Seçtiğiniz yapılandırma klasörünüzde (yukarıdaki örnekte "Firebase"), her bir yapılandırma için, kendi yapılandırmasıyla tam olarak aynı şekilde adlandırılan (büyük / küçük harfe duyarlı) klasörleri iç içe geçirin, bunların içine ilgili GoogleServices-Info.plistdosyaları şu şekilde yerleştirin:

Son GoogleServices-Info.plistolarak, projeye kazara bir kök seviyesinin eklenmediğinden emin olmak isterim, bu yüzden aşağıdakileri .gitignore dosyama ekliyorum.
# Ignore project level GoogleService-Info.plist
/[Project Name]/GoogleService-Info.plist