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

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

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

@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}

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

@GlideModule
class AppGlideModule : AppGlideModule()

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

GlideApp.with(requireContext()).load

1 ответ

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

http://bumptech.github.io/glide/doc/configuration.html

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

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

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

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

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

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

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