Дооснащение 2 файл класса проблема - PullRequest
0 голосов
/ 28 февраля 2019

В настоящее время я сталкиваюсь с проблемой при использовании модификации 2 в моем приложении.

public static Retrofit getClient(Context context)
{

    if (okHttpClient == null)
        initOkHttp(context);

    if (retrofit == null)
    {
        retrofit = new Retrofit.Builder()
                .baseUrl(CaselotREST.CASELOT_BASEURL)
                .client(okHttpClient)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
    return retrofit;
}

При попытке скомпилировать проект я получаю следующую ошибку.

ошибка: не удается получить доступ к файлу класса модификации для retrofit2.Retrofit не найден

Ответы [ 4 ]

0 голосов
/ 28 февраля 2019

Я понял это.Проблема связана с модульностью базы кода в нашем приложении для Android.У меня есть много модулей в моем приложении для Android, и каждый модуль имеет зависимости.Зависимости для модернизации, в которой находится модуль Webapi, но не в основном модуле приложения.Чтобы решить эту проблему, нужно добавить следующее в основной файл Gradle

implementation 'com.squareup.retrofit2:converter-gson:2.2.0'
implementation 'com.squareup.retrofit2:retrofit:2.2.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
0 голосов
/ 28 февраля 2019

Если вы ранее использовали Retrofit 1.x и теперь переходите к Retrofit 2 , вы можете добавить эту строку в файл Gradle

implementation 'com.squareup.retrofit2:retrofit:2.5.0'

также убедитесь, что у вас есть необходимые разрешения для вашего AndroidManifest файла

  <uses-permission android:name="android.permission.INTERNET" />

Если вы заинтересованы в использовании RXJava с Retrofit, вы можете проверить эту ссылку для учебника.

    //example 
    Gson gson = new GsonBuilder()
            .setLenient()
            .create();

    Retrofit build = new Retrofit.Builder()
            .baseUrl(BuildConfig.BASE_URL)
            .addConverterFactory(GsonConverterFactory.create(gson))
            .client(unsafeOkHttpClient)
            .build();

Приветствия, если это помогло вам.

0 голосов
/ 28 февраля 2019

Если вы используете RxJava2 с модернизацией, вам нужно что-то вроде этого.Добавьте зависимости для gson & retrofit, и если вы используете rxjava, наблюдаемый в вашем сервисе API модифицированного интерфейса, то, что импортирует адаптер.

/* retrofit, gson */
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1'
implementation 'com.squareup.retrofit2:converter-scalars:2.4.0'

Тогда ваш конструктор будет выглядеть примерно так:

 Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(Constants.BASE_API_URL)
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .client(okHttpClient)
            .build();

Где,

okHttpClient = new OkHttpClient.Builder().build();

И затем вы можете создать службу,

retrofit.create(RetrofitAPIService.class);

Где ваш RetrofitAPIService будет содержать реализации API примерно так:

@Headers("Content-Type: application/json")
@POST("v1/login/")
Observable<ApiResponse> userLogin(
        @Body String body
);
0 голосов
/ 28 февраля 2019

Убедитесь, что вы добавили зависимость модификации в файл build.gradle в вашем проекте.

implementation 'com.squareup.retrofit2:retrofit:2.5.0'
...