Как вывести базовый URL в Retrofit для Android - PullRequest
1 голос
/ 04 апреля 2019

Теперь у нас есть приложение для Android, которое отлично работает с Retrofit.Мы пытаемся автоматизировать сборку для тестирования и выпуска в производство, чтобы уменьшить вероятность человеческой ошибки (т. Е. Dev забывают указывать базовый URL-адрес для производства при сборке для производства .. и т. Д.)

Я заметил, что BaseURL для Retrofit определены в файле класса.Есть ли какой-нибудь метод, который мы можем использовать для его настройки в файле свойств или в XML, чтобы мы могли использовать скрипт Gradle для выбора правильного файла, который будет включен в сборку?

Спасибо

Ответы [ 3 ]

2 голосов
/ 04 апреля 2019

Вы можете определить константу в ваших buildTypes:

buildTypes {
    debug {
        buildConfigField "String", "API_URL", "\"https://url/pre/\""
    }
    release {
        buildConfigField "String", "API_URL", "\"https://url/pro/\""
    }
}

И затем использовать ее в модификаторе сборки:

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(BuildConfig.API_URL)
    .build();

Обратите внимание, что если у вас есть разные модули, BuildConfig определенв каждом из них.Для этих случаев я определяю buildTypes в модуле приложения и передаю BuildConfig.API_URL в качестве параметра при вызове модуля с модификатором сборки.

0 голосов
/ 04 апреля 2019

Помимо конфигурации типа сборки Gradle. Если у вас больше логики, чем несколько полей (или точнее, реализаций), вы можете определить классы / файлы, которые должны существовать только в разновидности типа / сборки, поместив ее в нужную папку..

Например, вы можете создать файл config (Java / Kotlin) и вместо того, чтобы поместить его в папку main/java/example/package/config.java модуля, поместить его в debug/java/example/package/config.java и release/java/example/package/config.java с помощьюто же имя пакета, чтобы дифференцировать его реализацию для этих типов сборки.

Для вашего примера этот файл может содержать статическое поле BASE_URL с различными значениями для разных типов сборки / разновидностей.

Это может быть сделано точно так же и для разновидностей.

0 голосов
/ 04 апреля 2019

Вы можете создать файл типа "urls.xml" и получить свой URL в виде строки.

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="base_url">https://www.myurl.com</string>
</resources>

Таким образом, вы можете настроить различные URL в зависимости от вашего вкуса и типа сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...