Как использовать типы сборки (debug vs release) для установки разных стилей и имен приложений?
Фон
В Android Studio у вас могут быть разные типы построения, каждая из которых имеет свою собственную конфигурацию, похожую на продукты-ароматы (как показано здесь)
Проблема
Я хочу, чтобы каждый раз, когда у меня было установлено мое приложение, я сразу же узнал, какой тип он был - отпустите или отлаживайте, просто посмотрев на него.
Для этого, я думаю, я могу использовать файл build.gradle:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
}
}
Вещь, я не знаю, что туда положить. Я хочу, чтобы имя приложения было другим (и все же оно имеет строку в файлах строк, как оно было переведено), и я хочу, чтобы стиль того, что в приложении отличался (например, цвет панели действий).
Я обнаружил, что могу использовать "resValue" (нашел об этом здесь), но по какой-то причине, независимо от того, что Я делаю, он не будет компилироваться:
- Если ресурс уже объявлен (например, в приложении-имени, который переводится), он говорит, что ресурс дублируется
- Если ресурс не был объявлен, я не могу связаться с ним через код /xml.
Вопрос
Как использовать разные значения ресурсов для типов сборки, даже если они уже существуют?
Ответы
Ответ 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"