1

Голосование со мной. Я относительно новичок в разработке Android и нуждаюсь в некоторой помощи.Как создать несколько конфигураций для одного продукта Android Build Flavor при сборке с Gradle?

У меня есть проект в Android Studio с двумя продуктами Flavors. Они фактически идентичны, за исключением нескольких жестко закодированных значений в них, например. URL-адреса, идентификаторы и активировать некоторые дополнительные функции.

Я хотел бы иметь только один аромат и переместить эти жестко кодированные значения в какой-то файл конфигурации/свойств, который теперь может быть прочитан или предварительно загружен при запуске, если это необходимо. Затем мне хотелось бы иметь какую-то команду gradle, которая создает различные APK, используя другой файл config/properties.

Таким образом, если я хочу создать другую конфигурацию для приложения (комбинацию свойств, о которых я упоминал выше), мне не нужно будет копировать (и поддерживать) другой продукт Flavor для этого.

Было бы здорово, если бы все это можно было сделать в Android Studio, а не в командной строке. Может ли кто-нибудь сказать мне, как это сделать?

Решение командной строки также может быть приемлемым, но в идеале это должно быть операционная система независимой, так как некоторые из наших разработчиков работают над MAC-адресами, а другие работают на ПК.

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

Вне предустановленных параметров Android, которые могут быть установлены в build.gradle, мы не смогли найти ничего, где мы могли бы настроить собственные свойства, которые повлияли бы на сборку.

Единственное решение, с которым мы могли столкнуться, чтобы иметь повторяющиеся Product Flavors с жестко закодированными значениями, изменилось на новую конфигурацию, которую мы хотим. Мы бы хотели избежать этого любой ценой.

Любая помощь будет оценена по достоинству.

+0

HYTA - Вы что-то пробовали?У вас есть какой-то конкретный вопрос, но «возможно ли это»? Потому что ответ на такие вопросы - «да/нет». Пожалуйста, задайте свой вопрос конкретному вопросу. –

+0

Я обновил свой оригинальный пост. Извините, если я расплывчато. Как я уже сказал выше, мы исследовали проблему, но никто не нашел ничего, кроме создания дубликатов Product Flavors. –

ответ

1

Похоже, я слишком скоро спросил: D.

Кому-то еще в нашей компании удалось решить проблему, используя типы сборки.

Например, скажем, нам нужна булева переменная, указывающая, должно ли приложение работать в «тестовом режиме». Мы можем определить переменную «TEST_MODE_ENABLED», используя параметр buildConfigField. Вы можете определить «тестирование» построить тип в Gradle файле следующим образом (см последний тип сборки):

buildTypes { 
    debug { 
     debuggable true 
     buildConfigField "boolean", "TEST_MODE_ENABLED", "false" 
    } 

    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     buildConfigField "boolean", "TEST_MODE_ENABLED", "false" 
    } 

    testing { 
     debuggable true 
     buildConfigField "boolean", "TEST_MODE_ENABLED", "true" 
    } 
} 

Этот параметр и другие могут быть доступны в коде Java с помощью ссылки:

BuildConfig.TEST_MODE_ENABLED 

С помощью этой концепции мы можем создать столько конфигураций, которые нам нравятся, а затем определить дополнительные варианты сборки, используя эти дополнительные типы сборки.

Мы также можем использовать это с gradlew, например .:

gradlew assemble[ProductFlavour][BuildType] 

Надежда Я объяснил, что правильно и что это может помочь кому-то еще.