Приложение и библиотека Android, которые используют Glide - appPackage1.GlideRequests не могут быть преобразованы в appPackage2.GlideRequests. - PullRequest
0 голосов
/ 15 декабря 2018

Я надеюсь, что кто-то сталкивался с этим раньше, и это просто простая настройка, по которой я скучаю.По сути, я создал библиотеку Kotlin, которая использует Glide и использует кинжал для настройки моего экземпляра glide в этой библиотеке.Эта библиотека сама по себе, и в фиктивном приложении работает отлично, без проблем.

У меня есть старый Java-проект, который я тестирую с использованием этой библиотеки. Все выглядит нормально, за исключением случаев, когда я нажимаю на экран с помощьюСкольжение функциональности.Glide используется и в приложении, и в библиотеке, и они, кажется, сталкиваются.

Это ошибка:

java.lang.ClassCastException: appPackage1.Utilities.GlideRequests cannot be cast to appPackage2.di.module.GlideRequests
        at appPackage2.di.module.GlideApp.with(GlideApp.java:88)

В старомJava Application Glide существует как:

@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}

В моей библиотеке Kotlin Glide существует как:

@GlideModule
class AppGlideModule : AppGlideModule()

И он выдает ошибку, когда вызываетсякак ниже из моей библиотеки:

GlideApp.with(requireContext()).load

1 Ответ

0 голосов
/ 15 декабря 2018

Похоже, мне нужно было немного углубиться в документацию.

http://bumptech.github.io/glide/doc/configuration.html#avoid-appglidemodule-in-libraries

Избегать AppGlideModule в библиотеках

Библиотеки не должны включать реализации AppGlideModule,Это не позволит любым приложениям, которые зависят от библиотеки, управлять своими зависимостями или настраивать параметры, такие как размеры и расположение кеша Glide.

Кроме того, если две библиотеки включают AppGlideModules, приложения не смогут компилироваться, если они зависят отоба будут вынуждены выбрать один или другой.

Это означает, что библиотеки не смогут использовать сгенерированный API Glide, но загрузка с RequestOptions все равно будет работать нормально (примеры см. на странице параметров)).

Также имеет отношение к проблеме Github: https://github.com/bumptech/glide/issues/2393

Надеюсь, если кто-нибудь еще столкнется с этим, этот ответ поможет.

...