Android Studio: переключение URL-адреса в зависимости от типа сборки? (используется для тестирования в debug/release)
Я читал что-то о вариантах и типах сборки, и я не знаю, правильно ли я это понимаю, но я хотел бы сохранить URL-адрес для locahost (тестирование) и один для производства (живой сайт в Интернете).
И мне нужно переключить их в зависимости от типа buildtype. Правильно ли это? или есть другая альтернатива?
Есть ли у кого-нибудь небольшой пример?
Есть ли способ сохранить эту информацию в файле, который мне не нужен, чтобы зафиксировать исходный контроль? Я использую файл gradle.properties для хранения некоторых паролей, которые gradle использует для подписания. Это отлично работает, поскольку этот файл не используется в управлении версиями.
Я немного запутался в правильном методе использования и его реализации.
Любые идеи?
Ответы
Ответ 1
Вы можете использовать BuildConfig для подачи разных URL-адресов для каждого типа BuildType
buildTypes {
debug {
buildConfigField "String", "SERVER_URL", '"http://someurl/"'
}
release{
buildConfigField "String", "SERVER_URL", '"http://someotherurl/"'
}
}
BuildConfig будет автоматически генерироваться каждый раз при синхронизации проекта с файлом gradle.
В вашем коде вы можете получить доступ к URL-адресу, подобному этому:
BuildConfig.SERVER_URL
Если вы не хотите фиксировать эти URL-адреса, вы можете сохранить их в своих gradle.properties, точно так же как ваш пароль и т.д. и ссылаться на них в build.gradle.
buildConfigField "String", "SERVER_URL", serverurl.debug
Ответ 2
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
buildConfigField "String", "BASE_URL", '"url1"'
debuggable false
}
debug {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
buildConfigField "String", "BASE_URL", '"url2"'
debuggable true
}
Это нужно сделать в gradle и сделать запуск двух приложений (выпуск и отладка) на одном телефоне, просто добавьте
applicationIdSuffix ".debug"
в части отладки. Поскольку имя пакета будет другим. Это сработало для меня.