Значение 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]"'
        }
 }
Другие вопросы по тегам