Подтвердить что ты не робот

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

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

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

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

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

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

Любые идеи?

4b9b3361

Ответ 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"

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