Retrofit2.4 + адаптер-rxjava2 + proguard

Retrofit2.4 + адаптер-rxjava2 + proguard

ошибка следующая:

03-11 14:28:14.401 11858 11858 E AndroidRuntime: Caused by:   java.lang.IllegalArgumentException: Unable to create call adapter for class  io.reactivex.Flowable
03-11 14:28:14.401 11858 11858 E AndroidRuntime:     for method RequestApis.getCameraInfo
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at retrofit2.ServiceMethod$Builder.methodError()
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at retrofit2.ServiceMethod$Builder.createCallAdapter()
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at retrofit2.ServiceMethod$Builder.build()
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at retrofit2.Retrofit.loadServiceMethod()
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at retrofit2.Retrofit$1.invoke()
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at java.lang.reflect.Proxy.invoke(Proxy.java:393)
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at $Proxy0.getCameraInfo(Unknown Source)
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at com.youlecamera.upload.helper.RetrofitHelper.getCameraInfo()
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at com.youlecamera.awsIot.IotService.bind()
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at com.youlecamera.awsIot.IotService.aZ()
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at com.youlecamera.awsIot.IotService$1.onReceive()
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:922)
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    ... 7 more
03-11 14:28:14.401 11858 11858 E AndroidRuntime: Caused by:  java.lang.IllegalStateException: Flowable return type must be parameterized as  Flowable<Foo> or Flowable<? extends Foo>
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory.get()
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at retrofit2.Retrofit.nextCallAdapter()
03-11 14:28:14.401 11858 11858 E AndroidRuntime:    at retrofit2.Retrofit.callAdapter()

мой прогард это:

Retrofit2.4 + адаптер-rxjava2 + proguard

Я пробовал модифицировать proguard много раз, но это не сработало, Как я могу сделать? Кто может мне помочь? Спасибо

мой код, как показано ниже, пожалуйста, помогите проверить, спасибо.

{
         ...
        OkHttpClient client = clientBuilder.build();
        Log.w(TAG, "RequestRetrofit", new Throwable());
        ...
        String url = (version == Constants.VERSION_PRE) ? RequestApis.HOST : RequestApis._HOST;
        Retrofit.Builder builder = new Retrofit.Builder()
                .baseUrl(url)
                .client(client)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create());
        Retrofit retrofit = builder.build();
        service = retrofit.create(RequestApis.class);
    }

всегда размещайте код как текст, а не как изображения

barbsan 11.03.2019 08:19
редактировать ваш вопрос, не размещайте код в комментариях
barbsan 11.03.2019 09:13

без прогарда работает?

Basi 11.03.2019 09:36

Обычно это происходит, когда вы забыли добавить адаптер вызова rxjava в Retrofit. Можете ли вы опубликовать код того, как вы инициализируете экземпляр Retrofit, пожалуйста?

Fred 11.03.2019 09:45

@Basi, хорошо работает без proguard.

spring 11.03.2019 09:57

@Fred, я добавил код, пожалуйста, проверьте его.

spring 11.03.2019 09:59

добавить -keep class retrofit2.adapter.rxjava.RxJavaCallAdapterFactory { *; } к progaurd

Basi 11.03.2019 10:05

проверьте этот связь

Basi 11.03.2019 10:10

@Basi, я изменил его, как вы сказали, но все равно не работает, та же ошибка.

spring 11.03.2019 10:20

@Basi, я проверил вашу ссылку и изменил ее, но все равно не работает. плач

spring 11.03.2019 10:42

Я использовал adapter-rxjava2-2.4.0.jar и retrofit-2.4.0.jar.

spring 11.03.2019 10:47

Ах, более внимательно изучив исключение, похоже, что в вашем API вы указали его как возвращающее Flowable вместо того, чтобы параметризовать его с помощью нужного вам класса, то есть Flowable<Foo>. Это правда?

Fred 11.03.2019 10:58

@POST("management/camera_base_info") Flowable<HttpResponse<BindInfoBean>> getCameraInfo(); из кода он должен возвращать Flowable<>

spring 11.03.2019 12:16

более того, я использовал rxjava:libs/rxjava-2.1.14.jar

spring 12.03.2019 03:04

как защитить io.reactivex? -dontwarn io.reactivex.** -keep class io.reactivex.** { *; }

spring 12.03.2019 04:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
15
423
0

Другие вопросы по теме