Каждый раз, когда я выпускаю свое приложение, я меняю все свои строки URL и некоторые ключи с тестирования на производство. То, как я это делаю, - это просто закомментировать тестовые строки перед выпуском. Есть ли лучший способ обработки строк на основе типа сборки?
Отдельные строковые значения Android для выпускных и отладочных сборок
Ответы (3)
Если вы используете Android Studio, по умолчанию система создает базовые версии release
и debug
. Поэтому, если вы добавите папки debug
и release
в папку app/src
вашего проекта, вы можете объявить там отдельные значения.
Итак, ваша структура должна быть такой:
project
-app
-src
-debug
-java
...
-res
-values
-strings.xml
-release
-java
...
-res
-values
-strings.xml
-main
-java
...
-res
-values
-strings.xml
Я также должен добавить, что если у вас есть строка, которая не определена ни в папке debug
, ни в папке release
, она будет возвращена в вашу папку main
.
project/app/src/main/res/values/strings.xml
project/app/src/debug/res/values/url-strings.xml
project/app/src/release/res/values/url-strings.xml
- person k3b; 16.03.2016
main
по умолчанию. Любой ресурс, который должен отличаться в сборках debug
или release
, вы просто добавляете в strings.xml (или, как @k3b упомянул другой файл). Android Studio всегда будет использовать резервную копию папки main
, поэтому вы можете иметь 1 строку URL-адреса в папках debug
/release
, и она будет принимать только их.
- person Jasper van de Klundert; 16.03.2016
admob.xml
одинаковыми (скопировал и вставил), потому что портировал на другие ОС, которые распознавали только файлы в основной папке.
- person aphoe; 02.08.2016
Что ж, вы можете использовать Gradle, если вам нужно использовать несколько строк.
buildTypes {
release {
resValue 'string', 'adUnitIdMain', '"production-id-value-should-be-here"'
resValue 'string', 'adUnitIdList', '"production-id-value-should-be-here"'
resValue 'string', 'adUnitIdDetail', '"production-id-value-should-be-here"'
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
resValue 'string', 'adUnitIdMain', '"test-id-value-should-be-here"'
resValue 'string', 'adUnitIdList', '"test-id-value-should-be-here"'
resValue 'string', 'adUnitIdDetail', '"test-id-value-should-be-here"'
}
}
resValue
, вы можете прочитать документ DSL здесь: google.github.io/android-gradle-dsl/current/, как указано в документации Google здесь: developer.android.com/studio/build/build-variants#build-types
- person Bruno Bieri; 06.10.2020
Просто сделайте два варианта в build.gradle. Затем два каталога, как указано в ссылке (developer.android.com/tools /building/configuring-gradle.html ). Поскольку вам нужно изменить только строки, просто скопируйте файлы strings.xml в новые каталоги (т.е. dev и production). Удалите исходный файл strings.xml.
Вот и все. :)
Нет необходимости перемещать файлы Java или другие файлы макета.
Короче говоря, оставьте в своем «основном» каталоге все, что должно быть одинаковым для всех вариантов сборки. Переопределите значения, зависящие от варианта сборки, в соответствующий каталог.