Android Studio: Переключение URL-адреса в зависимости от типа сборки? (Используется для тестирования в отладке / выпуске)

Я читал что-то о вариантах и ​​строках, и я не знаю, правильно ли я это понимаю, но я хотел бы сохранить URL-адрес для locahost (тестирование) и один для производства (живой сайт в Интернете).

И мне нужно переключить их в зависимости от того, какой buildtype. Правильно ли это? Или есть другая альтернатива?

У кого-нибудь есть небольшой пример?

Есть ли способ сохранить эту информацию в файле, который мне не нужен, чтобы зафиксировать исходный контроль? Я использую файл gradle.properties для хранения некоторых паролей, которые использует gradle для подписей. Это отлично работает, поскольку этот файл я не разделяю в управлении версиями.

Я немного запутался в правильном методе использования и его реализации.

Есть идеи?

Вы можете использовать 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 
  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 } 

Это вам нужно сделать в градиенте и сделать запуск двух приложений (выпуск и отладка) на одном телефоне, просто добавьте

ApplicationIdSuffix ".debug"

В части отладки. Поскольку имя пакета будет другим. Это сработало для меня.