Bu yüzden aynı soruyu düşündüm ve daha önceki gönderilerden bazı fikirleri kullanarak, bazıları GoogleServices-Info.plist
tüm uygulamalarda tüm ortamlar için uygulamalar yayınlıyor ve bu biraz endişe verici.
GoogleSerives-Info.plist
Dosyayı 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 debug
sahibim , (simülatörde çalıştırmak ve cihazda hata ayıklamak ve aktif olarak kodu kesmek staging
iç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_FOLDER
değ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.plist
dosyaları şu şekilde yerleştirin:
Son GoogleServices-Info.plist
olarak, 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