Подтвердить что ты не робот

Как использовать типы сборки (debug vs release) для установки разных стилей и имен приложений?

Фон

В Android Studio у вас могут быть разные типы построения, каждая из которых имеет свою собственную конфигурацию, похожую на продукты-ароматы (как показано здесь)

Проблема

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

Для этого, я думаю, я могу использовать файл build.gradle:

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        debuggable true
    }
}

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

Я обнаружил, что могу использовать "resValue" (нашел об этом здесь), но по какой-то причине, независимо от того, что Я делаю, он не будет компилироваться:

  • Если ресурс уже объявлен (например, в приложении-имени, который переводится), он говорит, что ресурс дублируется
  • Если ресурс не был объявлен, я не могу связаться с ним через код /​​xml.

Вопрос

Как использовать разные значения ресурсов для типов сборки, даже если они уже существуют?

4b9b3361

Ответ 1

Как использовать разные значения ресурсов для типов сборки, даже если они уже существуют?

Они уже существуют в наборе main. Добавьте другие источники для ваших других типов построения, в которых вы переопределяете нужные ресурсы.

Например, в этот примерный проект У меня есть набор источников main и debug. Оба имеют строковый ресурс app_name в res/values/strings.xml, но с разными значениями. В построении debug будет использоваться версия ресурса debug sourceet; в любой другой сборке (например, release), исходный набор debug полностью игнорируется, и используется версия ресурса main sourceet.

Обратите внимание, что у меня нет набора release. В частности, при переопределении ресурсов это совершенно нормально - вам нужен только источник для типа сборки, если вы хотите что-то изменить для этого типа сборки, а не для каждого типа используемого типа.

Ответ 2

В файле | Структура проекта | приложение | Ароматизаторы:

Version Name: 1.3

В файле ресурсов Strings мы имеем:

<string name="app_name">MyAppTitle</string>

В "onCreate" класса MainActivity:

...
//add version to application title
int versionCode = BuildConfig.VERSION_CODE; // unused in my application
String versionName = BuildConfig.VERSION_NAME;
this.setTitle(this.getTitle() + " v"+  versionName);
...

В результате получается "MyAppTitle v1.3"