Идентификатор приложения productFlavors

Я пытаюсь сделать два типа сборок в Android Studio, используя productFlavors, Мне нужно иметь уникальный идентификатор приложения для каждого типа buld. И вот проблема:

Прежде всего я добавляю этот код в мой файл Gradle

productFlavors {
    base {
        applicationId "ru.Public.lib"
    }

    city {
        applicationId "ru.Public.lib.city"
    }

Затем, когда я пытаюсь создать приложение с типом города, Android Studio показывает ошибку:

"Error:Execution failed for task ':app:processBaseDebugGoogleServices'.
No matching client found for package name 'ru.Public.lib.debug'"

После этого я решил, что мне нужно изменить имя пакета в моем файле манифеста. Я попытался изменить имя пакета в Manifest тремя способами:

  1. В структуре проекта я создал новое приложение Manifest> src > city > AndroidManifest.xml. В этом файле я использую package="ru.Public.lib.city"

  2. Я не создал новый манифест. Вместо этого я использовал placehilder для имени пакета, как это: package="${applicationId}"

  3. Я объединил эти два метода: "использование заполнителя в новом манифесте в приложении> src > city >"

Все показанные способы дают мне ошибку в манифесте: Android Studio окрашивает имена действий красным цветом и говорит unsolved class 'Activity Name'

Вот часть моего Манифеста

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ru.Public.lib">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <application
        android:name="ru.Public.lib.app.Application"
        android:hardwareAccelerated="true"
        android:icon="@mipmap/icon"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:resizeableActivity="false"
        android:supportsRtl="true"
        android:theme="@style/AppTheme.NoActionBarDefault">

        <activity
            android:name=".activities.ActivityMain"
            android:configChanges="orientation|keyboardHidden">

        </activity>

        <activity
            android:name=".activities.ActivityEdition"
            android:configChanges="orientation|screenSize|keyboardHidden">

        </activity>
.....................................................................etc.
</manifest>

Так. Похоже, мне нужно воссоздать все мои действия в новых каталогах в соответствии с каждым нужным именем пакета. Но это слишком сложный способ. Я уверен, что Google решил эту проблему.

У кого-нибудь есть идеи по этому вопросу?

Спасибо!

1 ответ

Вот некоторый шаг, чтобы решить это.

  1. Перейти к вашей консоли Firebase

  2. Выберите свой предыдущий проект и добавьте другое приложение

  3. Зарегистрируйте другой идентификатор приложения (зарегистрируйте все ваши идентификаторы приложений по одному)

  4. Тогда Скачать новый google-services.json
  5. И место новое google-services.json в вашем проекте

Это оно