Значение string.xml зависит от варианта сборки
Я хочу назначить значение для строки в string.xml различных значений в зависимости от варианта сборки /buildType. Я представляю что-то вроде этого:
res/values-debug/string.xml <string name="my_string">some debug value</string> res/values-release/string.xml <string name="my_string">some release value</string>
но я не вижу ничего подобного. Это возможно?
3 ответа
Да, это возможно!
В ваш build.gradle вы можете добавить что-то вроде этого:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.release
}
debug {
applicationIdSuffix ".debug"
minifyEnabled false
debuggable true
signingConfig signingConfigs.release
}
}
Тогда в вашем src
папка в вашем проекте у вас должна быть папка с именем main, рядом с ней добавьте одну debug
, Откажитесь, пока вы создаете свой вариант отладки, любые ресурсы в вашей папке отладки будут заменять ресурсы в главной, которая является папкой выпуска.
Должно выглядеть так:
src/
main/
java/ -- all your java code
res/
...
values/
strings.xml
debug/
res/
...
values/
strings.xml
РЕДАКТИРОВАТЬ: Подходы из двух других ответов также работает хорошо. Но если у вас много строк, сохраняющих их как XML, может быть проще в обращении.
Это возможно через ваш файл build.gradle
buildTypes {
release {
resValue "string", "my_string", "some release value"
}
debug {
resValue "string", "my_string", "some debug value"
}
}
Тогда вы можете просто использовать это значение как @string/my_string
где вы хотите
resValue 'string', '<string_name>', "some string"
определить разные в вашем build.gradle для разных вариантов сборки / вкусов продукта
Вы можете сделать это прямо из Android Studio. Например, если вам нужно другое имя приложения для "промежуточной" версии, вы можете (Android Studio v3.5):
- Щелкните правой кнопкой мыши папку значений -> Создать -> Файл ресурсов значений
- Выберите "постановка" в меню набора источников.
- укажите strings.xml как имя файла
На этом этапе Android Studio генерирует дополнительный strings.xml
файл для вашего конкретного варианта сборки. Отредактируйте созданный файл, указав свое "промежуточное" имя приложения (например, MyAppName - Staging).
build.gradle(приложение)
productFlavors {
stage {
applicationIdSuffix ".staging"
buildConfigField 'String', 'SITE_URL', '"[staging_link_here]"'
}
prod {
buildConfigField 'String', 'SITE_URL', '"[production_link_here]"'
}
}