@lacredin
Программист

Как правильно собирать два приложения, используя productFlavors в android?

Всем доброго времени суток!
Заказчику понадобилось иметь два приложения в google play, которые отличаются буквально только тем, куда они делают запрос, иконками и названиями.
Я попытался использовать productFlavors, примерно с таким кодом

flavorDimensions "application"
   
    compileSdkVersion 27
    buildToolsVersion '27.0.3'
    defaultConfig {
        applicationId "ru.local"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 30
        versionName '1.28'
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
        signingConfig signingConfigs.config
        multiDexEnabled = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    productFlavors {
        agrodozorSengenta {
            applicationIdSuffix ".app1"
            dimension "application"
        }
        agrodozorStandart {
            applicationIdSuffix ".app2"
            dimension "application"
        }
    }


Но это привело к тому, что нельзя установить оба приложения на одно устройство.
Подскажите пожалуйста в чём проблема.
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
@lacredin Автор вопроса
Программист
Конкретно в моём случае, была проблема в том, что я использовал ContentProvider, у которого не позаботился о уникальном имени.
Как только имя стало зависеть от версии productFlavors, всё стало работать.

Вот так выглядит изменённый провайдер
<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="@string/provider_authorities"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_path">
            </meta-data>
        </provider>


Параметр @string/provider_authorities я беру из xml, привязного к productFlavors
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kapitalistka
id приложения должен быть разным
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы