Для настройки firebase я использую две конфигурации: 1.GoogleService-Info-test.plist, 2.GoogleService-Info-prdn.plist для UAT и Production. Для установки Crashlytics с использованием Firebase я следил за документацией Firebase https://firebase.google.com/docs/crashlytics/get-started?authuser=1#ios. Но когда я пытаюсь запустить, он выдает ошибку на этапе сборки при запуске скрипта.
Я пробовал без изменения имени файла конфигурации, и это сработало.
Сообщение об ошибке на этапе сборки при запуске сценария запуска структуры «Не удалось получить GOOGLE_APP_ID в файле служб Google из среды сборки».
Может ли кто-нибудь предложить лучшее решение для достижения моего требования.
попробуй удалить их
добавлять по одному файлу





Это один из способов, которым вы можете это сделать, разделив среды ваших проектов по целям, тем самым вы можете добавить свои разные файлы plist и просто проверить цель, к которой они принадлежат, таким образом, когда вы компилируете цель, она возьмет ее соответствующий plist-файл
Другой способ сделать это или посмотреть, как это сделать, называется несколькими средами с firebase, вот несколько полезных ссылок
Используйте разные GoogleService-Info.plist для разных схем сборки
https://medium.com/rocket-fuel/using-multiple-firebase-environments-in-ios-12b204cfa6c0
Это блестяще. Это должно быть частью документации FB.
Не создавайте цели, используйте для этой цели «конфигурации сборки».
@DanSkeel, почему? Это звучит как неправильный инструмент для этой задачи
@BenLeggiero, потому что цели предназначены для совершенно разных приложений (например, приложения для часов), а не для конфигураций одного и того же приложения. Вот почему у них есть build configurations для этой цели. Главный недостаток такого подхода — в pbxproj файле для каждого исходного файла получается <numberOfTargets> повторяющихся строк, что увеличивает сложность разрешения конфликтов. Вы можете добавить пользовательский параметр сборки с именем файла конфигурации и использовать его в коде, чтобы получить правильный файл в зависимости от конфигурации сборки.
Отличное рассуждение! Спасибо, @DanSkeel
Другой способ — убедиться, что один plist сохраняет исходное имя GoogleService-Info.plist
Различные цели означали для меня больше работы по обновлению CI.
Это справедливо по крайней мере для Xcode 11, не тестировалось ни в каких других версиях.
Как вы можете быть уверены, что тогда он свяжет Dsym с соответствующим приложением? GOOGLE_APP_ID различаются в файлах plist, если у вас есть один идентификатор пакета для теста и один для продукта.
Попробуйте понизить версию, мне помогло! Я использовал: «Ткань», «1.9.0» «Crashlytics», «3.12.0»
Все должны всегда использовать последнюю версию стабильного программного обеспечения. Программное обеспечение старой версии может содержать критические ошибки и проблемы с безопасностью.
Это сработало для меня:
При установке Crashlytic с Firebase для нескольких схем может возникнуть ошибка Could not get GOOGLE_APP_ID in Google Services file from build environment. Вы можете исправить это:
Build Settings добавьте пользовательское определение имени файла в User Defined:Build Phases нажмите кнопку «плюс» New Run Script Phase над этапом сборки Crashlytic и введите этот код в текстовое поле. Не забудьте переименовать %YOUR_CUSTOM_PATH_TO_FOLDER% в свой путь к файлам Plist:GOOGLE_SERVICE_INFO_PLIST_FROM = "${PROJECT_DIR}/%YOUR_CUSTOM_PATH_TO_FOLDER%/${FIREBASE_CONFIG_FILE}.plist"
BUILD_APP_DIR = "${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}"
GOOGLE_SERVICE_INFO_PLIST_TO = "${BUILD_APP_DIR}/GoogleService-Info.plist"
cp "${GOOGLE_SERVICE_INFO_PLIST_FROM}" "${GOOGLE_SERVICE_INFO_PLIST_TO}"
Чтобы сделать его последовательным: GOOGLE_SERVICE_INFO_PLIST_FROM = "${PROJECT_DIR}/%YOUR_CUSTOM_PATH_TO_FOLDER%/${FIREBASE_CONFIG_FILE}.plist" BUILD_APP_DIR = "${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}" GOOGLE_SERVICE_INFO_PLIST_TO = "${BUILD_APP_DIR}/GoogleService-Info.plist" cp "${GOOGLE_SERVICE_INFO_PLIST_FROM}" "${GOOGLE_SERVICE_INFO_PLIST_TO}" Но это решение действительно работает для нескольких схем, использующих одну и ту же цель с разными идентификаторами пакетов.
Я получаю следующую ошибку: unexpected EOF while looking for matching "' ` и ` синтаксическая ошибка: непредвиденный конец файла Команда PhaseScriptExecution не удалась с ненулевым кодом выхода `
@huync Я получаю сообщение об ошибке при запуске этого скрипта ${PODS_ROOT}/FirebaseCrashlytics/run Каким должен быть путь к входным файлам?
@Ollikas, если вы столкнулись с той же проблемой и решили ее. пожалуйста, дайте знать, каков путь к входным файлам? Я получаю ту же ошибку при запуске скрипта.
Это сработало для меня:
Убедитесь, что вы добавили этап сборки Xcode Crashlytics после Copy Bundle Resources.
Ты звезда Андреа! Спасибо, Грейс
Убедитесь, что в проводнике xcode на левой стороне отображается "GoogleService-Info.plist".
В моем случае проблема связана со ссылкой на "GoogleService-Info.plist". По ошибке я просто добавил файл в расположение проекта, из-за этого он отсутствует в проводнике xcode с левой стороны.
Просто перетащите «GoogleService-Info.plist» в xcode.
Я использовал новую бета-версию Firebase/Crashlytics и получаю сообщение об ошибке «Идентификатор приложения Google или файл служб Google не предоставлены», когда я пытаюсь вручную загрузить dSYMS
Вот команда:
/path/to/pods/directory/FirebaseCrashlytics/upload-symbols
-gsp/path/to/GoogleService-Info.plist -p ios /path/to/dSYMs
Затем я полагаю, что между «-gsp» и путем к Google.plist должен быть пробел, после чего это сработало.
что ты сделал с этой командой? Вы запускали его в терминале? как получить путь к dSYM?
Вы можете получить dsym с подключением itunes в разделе сборки... и да, я запускаю в терминале
Что ж, все приведенные выше ответы предназначены для возможного решения этой проблемы, в моем случае файл GoogleService.plist отсутствовал в «Копировать ресурсы пакета», добавив в него, что сработало в моем случае.
Чтобы проверить файл, перейдите
Каталог проекта >> Этапы сборки >> Копировать ресурсы пакета
добавьте его добавьте сюда, если вы обнаружите пропажу.
В моем случае я создал Новая фраза сценария запуска выше Скомпилировать исходники, поэтому всегда вижу
Could not get GOOGLE_APP_ID in Google Services file from build environment
Когда я переместил скрипт запуска Crashlytic в конец списка, ошибка исчезла. Пожалуйста, посмотрите на следующий снимок экрана:

И статья об этом здесь
Я также выполнил те же действия, но по-прежнему получаю сообщение об ошибке: Не удалось получить GOOGLE_APP_ID в файле Служб Google из среды сборки.
У меня была та же ошибка, в том числе из-за того, что у меня есть несколько идентификаторов пакетов, и поэтому у меня есть сценарий фазы сборки с именем Скрипт Firebase (который указывает на правильный GoogleService-Info.plist ), который выполнялся после Скрипт Crashlytics. Решение состоит в том, чтобы запустить Скрипт FirebaseдоСкрипт Crashlytics.
У меня было это на моих «Фазах сборки», и это работает
"${PODS_ROOT}/FirebaseCrashlytics/run"
"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${PROJECT_DIR}/MyApp/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
Добавление -gsp и -p работает для меня. Я переместил GoogleService-Info.plist в другой каталог, нужно ли использовать -gsp, чтобы указать местоположение.
Это мое выбранное решение. Я использую переменную CONFIGURATION для разрешения цели следующим образом: PLIST = "${PROJECT_DIR}/${TARGET_NAME}/Environment/${CONFIGURATION}/GoogleService-Info.plist"
Где вы добавили их на этапах сборки?
В нашем проекте только одна цель, но нам нужно использовать два файла конфигурации Firebase GoogleService-Info-Prod.plist и GoogleService-Info-Dev.plist.
У меня было это в моих «Фазах сборки», и это работает.
if [ "${CONFIGURATION}" = "Release" ]; then
${PODS_ROOT}/FirebaseCrashlytics/run -gsp ${PROJECT_DIR}/RushCard/FirebaseConfig/GoogleService-Info-Prod.plist
else
${PODS_ROOT}/FirebaseCrashlytics/run -gsp ${PROJECT_DIR}/RushCard/FirebaseConfig/GoogleService-Info-Dev.plist
fi
Я использую несколько конфигураций для нескольких приложений с белой маркировкой. Я добавил определяемую пользователем переменную FIREBASE_SUFFIX и изменил свой скрипт на следующее:
${PODS_ROOT}/FirebaseCrashlytics/run -gsp ${PROJECT_DIR}/Firebase/GoogleService-Info-${FIREBASE_SUFFIX}.plist
ПРИМЕЧАНИЕ. Я использую Carthage для firebase здесь: https://github.com/firebase/firebase-ios-sdk/blob/master/Carthage.md. Если у вас такая же настройка, вы должны вместо этого использовать что-то вроде этого (замените путь к тому месту, где вы поместили файлы сценария):
${PROJECT_DIR}/scripts/run -gsp ${PROJECT_DIR}/Firebase/GoogleService-Info-${FIREBASE_SUFFIX}.plist
В моем случае у меня было другое имя в моем файле, его имя было GoogleService-Enterprise-Info.plis, когда я изменил его на обычное имя GoogleService-Info.plist, ЭТО РАБОТАЕТ ОТЛИЧНО!!
Решением для меня было удаление вызова скрипта загрузки символов.
В одном из руководств Crashlytics упоминается, что вы должны добавить это:
${PODS_ROOT}/FirebaseCrashlytics/run
/path/to/pods/directory/FirebaseCrashlytics/upload-symbols <- Not needed
Я неправильно это истолковал... сценарий запуска уже вызывает символы загрузки, поэтому нет необходимости добавлять второй вызов.
Я получаю сообщение об ошибке: Не удалось получить GOOGLE_APP_ID в файле Служб Google из среды сборки.
@ashwinitechnopurple убедитесь, что вы добавили plist из Firebase в свой проект и что он также добавлен в правильное целевое приложение
Я столкнулся с той же проблемой для @react-native-firebase/crashlytics.
Если вы столкнулись с этой проблемой, вы, вероятно, пропустили инструкцию по настройке ios, упомянутую в ссылке ниже. Пожалуйста, следуйте инструкциям, чтобы устранить проблему. https://rnfirebase.io/#generating-ios-credentials
Эта ошибка будет отображаться, если в имени вашего проекта или в пути к вашему проекту есть пробел.
Подробнее читайте в этом Ошибка GitHub
Спасибо, но мне это не помогло. В моем случае в пути к проекту нет пробелов, но все еще есть эта ошибка.
В дополнение к другим ответам..
Я столкнулся с этой проблемой с точно таким же сообщением об ошибке, и в моем случае все было в порядке с файлом GoogleService-Info.plist, за исключением того, что он был сгенерирован с неправильным идентификатором пакета для приложения (он был изменен в XCode намного позже, чем произошла начальная настройка Firebase), поэтому Мне пришлось создать новое приложение в консоли Firebase с правильным идентификатором пакета (его нельзя редактировать) и загрузить новый GoogleService-Info.plist.
Если вы используете один из популярные скрипты сборки для обработки нескольких разных сред, вероятно, полезно знать, что вы должны использовать другой пункт назначения GoogleService-Info.plist в зависимости от целевой платформы:
// iOS
PLIST_DESTINATION=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
// watchOS
PLIST_DESTINATION=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.appex
// macOS
PLIST_DESTINATION=${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Resources
почему в имени вашего файла есть -test или -prdn?