Переключение окружения при разработке Android-приложений

Если вы используете Firebase при разработке Android-приложений, например для отправки пуш-сообщений или валидации номера телефона, — наверное вы сталкивались с необходимстью переключаться между разными проектами Firebase, — например один для разработки, а другой для релиза. Не хотелось бы чтобы пуши с внутрикорпоративными шутками прочитала пара миллионов пользователей реального приложения. Тут и до суда недалеко дойти. Поэтому, переключайтесь.

Одно из самых распространненых заблуждений в среде разработчиков, что при смене проекта Firebase, нужно менять имя пакета, потому что каждый Firebase-проект связан с applicaton ID, которое очень похоже (но только похоже) на имя пакета. Нет — это, не так, менять имя не нужно. Нужно менять только application ID.

Обратимся к документации developer.android.com/studio/build/application-id.

Когда вы создаете новый проект в Android Studio, application ID точно совпадает с именем пакета, которое вы выбрали во время установки. Однако идентификатор приложения и имя пакета не зависят друг от друга за пределами этого кейса. Вы можете изменить имя пакета, и оно не повлияет на идентификатор приложения, и наоборот (хотя, вы не должны изменять идентификатор приложения после публикации приложения).

Вы все еще меняете имена пакетов — тогда мы идем к Вам.

Как сконфигурировать проект для работы в нескольких окружениях описано в руководстве.

В большинстве случаев Вы работаете с центральным объектом приложения Firebase, который управляет конфигурацией для всех API Firebase. Этот объект инициализируется как часть вашей обычной настройки. Однако, если вы хотите получить доступ к нескольким проектам из одного приложения, вам потребуется несколько объектов приложения Firebase. Вы должны инициализировать эти другие экземпляры.

В обоих случаях сначала необходимо создать объект параметров Firebase, чтобы хранить данные конфигурации для приложения Firebase. Полную документацию по опциям можно найти в справочной документации по API для класса FirebaseOptions.Builder

// Manually configure Firebase Options. The following fields are REQUIRED:
//   - Project ID
//   - App ID
//   - API Key
FirebaseOptions options = new FirebaseOptions.Builder()
        .setProjectId("my-firebase-project")
        .setApplicationId("1:27992087142:android:ce3b6448250083d1")
        .setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw")
        // setDatabaseURL(...)
        // setStorageBucket(...)
        .build();

После инициализации этого объекта, его можно использовать для настройки дополнительного экземпляра приложения Firebase. Обратите внимание, что во всех приведенных ниже примерах мы используем строку second. Это имя используется для извлечения экземпляра приложения и для его отличия от других экземпляров, включая экземпляр по умолчанию (с именем [DEFAULT]). Вы должны выбрать строку, соответствующую предполагаемому использованию другого проекта Firebase.

// Manually configure Firebase Options. The following fields are REQUIRED:
//   - Project ID
//   - App ID
//   - API Key
FirebaseOptions options = new FirebaseOptions.Builder()
        .setProjectId("my-firebase-project")
        .setApplicationId("1:27992087142:android:ce3b6448250083d1")
        .setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw")
        // setDatabaseURL(...)
        // setStorageBucket(...)
        .build();

По материалам:

  1. firebase.google.com/docs/projects/multiprojects
  2. developer.android.com/studio/build/application-id
Tags:
andoid, firebase, firebase cloud messaging, development

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.