Разный код в другом варианте сборки

У меня есть два варианта сборки в моем приложении, один из которых является стандартной версией приложения, а второй - приложением для настройки.

productFlavors {
        customConfig {
            minSdkVersion 14
            applicationId 'es.com.custom'
            targetSdkVersion 22
            versionCode 3
            versionName '3.0.0'
        }
        standard {
            minSdkVersion 14
            applicationId 'es.com.standard'
            targetSdkVersion 22
            versionCode 3
            versionName '3.0.0'
        }

Для настройки мне нужно реализовать новые функции, но только для настройки, поэтому эти новые функции не будут доступны в стандартной версии. Я не уверен, что я должен делать.

1.- Два класса, один со стандартными требованиями и один с пользовательскими требованиями
2.- В стандартном классе сделать что-то вроде:

  if (getPackageName()==customConfig )
    // do the custom things
    else
    //do the standard things

3 ответа

Решение

Варианты сборки являются результатом того, что Gradle использует определенный набор правил для объединения настроек, кода и ресурсов, настроенных в ваших типах сборки и вариантах продукта. Хотя вы не настраиваете варианты сборки напрямую, вы конфигурируете типы сборки и разновидности продукта, которые их формируют.

 if(BuildConfig.Flavor.equals("customConfig")) 
    {

    }
  else
   {

   }

Читайте Создание нескольких вариантов Android

Вы должны создать исходные каталоги для каждого варианта. Таким образом, вы сможете сохранить отдельный файл для конкретного аромата.

Пожалуйста, перейдите по ссылке, которая поможет вам.

Вы можете сделать это одним простым способом. У вас должна быть папка с именем " стандарт " прямо сейчас в вашем проекте. Просто создайте другую папку с именем " customConfig " (или, возможно, она была создана после синхронизации Gradle) в той же папке, где находится " стандартная " папка.

В вашем " customConfig " создайте другую папку с именем "res" (опять же, у вас может быть она уже есть). Затем создайте еще одну папку "Значения". В папке "значения" вы можете создать свой файл значений. Назовите файл values.xml и вернитесь в свой проект. Ваш файл " values.xml " должен выглядеть так:

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <string name="custom_app_id">es.com.custom</string>s
</resources>

Теперь в своем коде вы можете проверить, в какой переменной среды вы находитесь:

 if (getPackageName().equals(getString(R.string.custom_app_id)))// for custom
// do the custom things
else
//do the standard things

Надеюсь, это поможет!

Другие вопросы по тегам