Я рассматриваю возможность использования Firebase в качестве MBaaS, однако не смог найти надежного решения следующей проблемы:
Я хотел бы настроить две отдельные среды Firebase, одну для разработки и одну для производства, но я не хочу делать ручное копирование функций (например, удаленную настройку конфигурации, правила уведомлений и т. Д.) Между средой разработки и производственной средой. ,
Есть ли какой-нибудь инструмент или метод, на который я могу положиться? Настройка правил удаленной настройки или уведомлений с нуля может быть сложной задачей и слишком рискованной.
Какие-либо предложения? Есть ли лучший подход, чем две отдельные среды?
Прежде чем опубликовать другой ответ на вопрос, который объясняет, как настроить отдельные учетные записи Firebase: это не вопрос, прочитайте его еще раз. Вопрос в том, как ПЕРЕДАТЬ изменения между отдельными учетными записями dev и prod или каким-либо лучшим решением, чем копировать между ними вручную.
Ответы:
Как все отметили - вам нужно более одного проекта / базы данных.
Но чтобы ответить на ваш вопрос о необходимости иметь возможность копировать настройки / данные и т. Д. Из разработки в производство. У меня была точно такая же потребность. Несколько месяцев в разработке и тестировании я не хотел вручную копировать данные.
В результате я сделал резервную копию данных в хранилище, а затем восстановил их в другой базе данных. Это довольно грубый способ сделать это - и я сделал целое резервное копирование / восстановление базы данных - но вы могли бы взглянуть в этом направлении для более контролируемого способа. Я не использовал его - он очень новый - но это может быть решением: модуль NPM firestore-export-import
Редактировать : Firestore резервного копирования / экспорта / импорта информации здесь Cloud Firestore Экспорт и импорт данных
Если вы используете Firebase RTDB, а не Firestore - эта документация может помочь: Автоматическое резервное копирование Firebase
Вам нужно будет правильно установить разрешения, чтобы разрешить вашей производственной базе данных доступ к той же корзине хранения, что и ваша разработка. Удачи.
источник
Если вы используете firebase-tools, есть команда,
firebase use
которая позволяет вам указать, какой проект вы используете дляfirebase deploy
firebase use --add
Появится список ваших проектов, выберите один, и он попросит вас псевдоним. Оттуда вы можетеfirebase use alias
иfirebase deploy
будете подталкивать к этому проекту.В моем личном использовании у меня есть my-app и my-app-dev как проекты в консоли Firebase.
источник
В настоящее время я не использую Firebase, но рассматриваю это как себя. Похоже, для этого нужно создать совершенно отдельный проект на консоли. Был пост в блоге, который рекомендовал это на старом сайте Firebase, хотя сейчас он, похоже, удален. https://web.archive.org/web/20160310115701/https://www.firebase.com/blog/2015-10-29-managing-development-environments.html
Также это обсуждение рекомендует то же самое: https://groups.google.com/forum/#!msg/firebase-talk/L7ajIJoHPcA/7dsNUTDlyRYJ
источник
Как я это сделал:
Таким образом, я не обязан поддерживать мои JSON.
источник
Этот пост описан очень простой подход с типом сборки отладки и выпуска.
В двух словах:
=> см. пост в блоге для подробного описания.
Если вы хотите использовать разные варианты сборки, прочитайте этот обширный пост из официального блога Firebase . Он содержит много ценной информации.
Надеюсь, это поможет!
источник
Вам нужно будет управлять различными типами сборки
Следить за этим
Сначала создайте новый проект в консоли Firebase, назовите id как YOURAPPNAME-DEV
Нажмите кнопку «Добавить приложение для Android» и создайте новое приложение. Например, назовите его com.yourapp.debug. Новый файл google-services.json будет загружен автоматически
Под каталогом src вашего проекта создайте новый каталог с именем "debug" и скопируйте новый файл google-services.json здесь
На уровне вашего модуля build.gradle добавьте это
Теперь при сборке отладки будет использоваться google-services.json из папки «debug», а при сборке в режиме выпуска будет рассматриваться google-services.json из корневого каталога модуля.
источник
src
подключаемый модуль Google Services Gradle знает, что нужно искать google-services.json в подкаталоге для buildType, как описано здесь developers.google.com/android/guides/…Чтобы решить эту проблему для моей ситуации, я создал три проекта Firebase, каждый с одним и тем же проектом Android (то есть
applicationId
без использованияapplicationIdSuffix
предложенных другими). В результате были получены три файла google-services.json, которые я сохранил на своем сервере Continuous Integration (CI) в качестве пользовательских переменных среды . Для каждого этапа сборки (dev / staging / prod) я использовал соответствующий файл google-services.json.Для проекта Firebase, связанного с dev, в его проекте Android я добавил отпечаток отладочного сертификата SHA. Но для постановки и подталкивания у меня просто CI подписывают APK.
Вот урезанный,
.gitlab-ci.yml
который работал для этой установки:Я доволен этим решением, потому что оно не основано на хитростях build.gradle, которые, на мой взгляд, слишком непрозрачны и поэтому сложны в обслуживании. Например, когда я попробовал использовать подходы
applicationIdSuffix
и разныеbuildType
s, я обнаружил, что не могу заставить инструментальные тесты запускаться или даже компилироваться, когда я пытаюсь переключать типы сборки, используяtestBuildType
. Android, казалось, давал особые свойства,debug
buildType
которые я не мог понять, чтобы понять.По моему опыту, скрины CI довольно прозрачны и просты в обслуживании. Действительно, подход, который я описал, работал: когда я запускал каждый из APK, сгенерированных CI, на эмуляторе, шаг консоли «Запустить приложение для проверки установки» консоли Firebase был
чтобы:
для всех трех приложений, как я запустил их по одному в эмуляторе.
источник
У Firebase есть страница по этому вопросу, в которой рассказывается, как настроить ее для dev и prod.
https://firebase.google.com/docs/functions/config-env
источник
Я обновляю этот ответ на основе информации, которую я только что нашел.
Шаг 1
На firebase.google.com создайте несколько сред (например, dev, staging, prod)
MySite-DEV
MySite-стадирования
MySite-прод
Шаг 2
а. Перейдите к тому, который вы хотите использовать по умолчанию (например, dev)
б. Бегать
firebase deploy
с. После развертывания запустите
firebase use --add
д. Появится опция выбора из разных проектов, которые у вас есть.
Выделите проект, который вы хотите добавить: mysite-staging , и выберите его.
е. Затем вас попросят указать псевдоним для этого проекта. Введите постановку .
Запустите элементы ae еще раз для prod и dev, чтобы у каждого окружения был псевдоним
Знайте, в какой среде вы находитесь
Бегать
firebase use
default (mysite-dev)
* dev (mysite-dev)
staging (mysite-staging)
prod (mysite-dev)
(слева от одной из сред будет звездочка. Это та, в которой вы сейчас находитесь. Она также будет выделена синим цветом)
Переключение между средами
Беги
firebase use staging
илиfirebase use prod
двигайся между ними.Как только вы окажетесь в нужной среде, запустите,
firebase deploy
и ваш проект будет развернут там.Вот пара полезных ссылок ...
Справочник по CLI
Развертывание в нескольких средах
Надеюсь это поможет.
источник
Мы делаем это путем создания разных файлов ключей json для разных сред. Мы использовали функцию служебной учетной записи в соответствии с рекомендациями Google, и у нас есть один файл для разработки и другой для производства.
источник
Создайте проект Tow с Dev и производственной средой на базе Firebase. Загрузите файл json с веб-сайта
и настройте SDK согласно: https://firebase.google.com/docs/android/setup или для Crashlytics: https://firebase.google.com/docs/crashlytics/get-started?platform=android
Сначала разместите соответствующий google_services.json для каждого buildType в следующих местах:
Примечание. Root app / google_services.json. Этот файл должен быть в соответствии с вариантами сборки. Скопируйте код json в корневой файл json.
Теперь давайте соберем несколько простых задач в build.gradle вашего приложения, чтобы автоматизировать перемещение соответствующего google_services.json в app / google_services.json
скопируйте это в файл приложения / Gradle
Прекрасно - но вручную запускать эти задачи перед созданием приложения довольно сложно. Мы бы хотели, чтобы соответствующая задача копирования выше была запущена раньше, чем: assemblyDebug или: executeRelease. Давайте посмотрим, что произойдет, когда: executeRelease запущен: скопируйте этот файл в файл / gradlew
Обратите внимание на задачу: app: processReleaseGoogleServices. Эта задача отвечает за обработку корневого файла google_services.json. Мы хотим, чтобы обрабатывался правильный google_services.json, поэтому мы должны сразу же запустить задачу копирования. Добавьте это в свой build.gradle. Обратите внимание на вложение afterEvaluate.
скопируйте это в файл приложения / Gradle
Теперь, в любое время: app: processReleaseGoogleServices вызывается, наш новый определенный: app: switchToRelease будет вызываться заранее. Та же логика для отладки buildType. Вы можете запустить: app: assemblyRelease, и версия выпуска google_services.json будет автоматически скопирована в корневую папку вашего модуля приложения.
источник
google-services.json
файл в корневую папку, если вы храните его в папка вкуса, которая прекрасно. Вместо этогоassembleRelease
вы можете просто вызватьassembleTestRelease
задачу.