원문보기:링크

소개

기능 확장을 위해 Glide 는 통합 라이브러리를 지원하고 있습니다. 통합 라이브러리는 크기와 범위가 다양하지만 일반적으로 네트워킹 라이브러리나 새로운 디코드 유형을 추가 지원하기 위해 사용 하고 있습니다. 각각 별도의 라이브러리 별로 확장 기능을 제공하게 함으로써 사용자로 하여금 원하는 기능만 선택할 수 있게 하여, APK 사이즈를 줄이고 앱의 설치 공간을 줄일 수 있게 하였습니다.

이 페이지에서는 Glide 에서 사용 가능하는 통합 라이브러에 대한 내용을 담고 있습니다.

FAQ

통합 라이브러리 의존성은 어떻게 설정하나요?

  1. 해당하는 Maven, Gradle, jar 디펜던시를 빌드에 포함시킵니다. 통합 라이브러리는 옵션이기에 Glide jar 파일이나 maven 디펜더시에 포함되어 있지는 않습니다.
  2. setup steps for Applications on the configurations page 항목을 확인하시고 AppGlideModule 와 Glide 의 어노테이션 프로세서를 추가하시기 바랍니다.
  3. Maven 또는 Gradle을 사용하는 경우 통합 라이브러리 자체의 디펜던시를 포함하거나 통합 라이브러리용 jar 를 프로젝트에 추가합니다.

    대부분의 통합 라이브러리는 각 라이브러리의 LibraryGlideModule 와 Glide 의 어노테이션 프로세서 덕분에 자동으로 작동하기 시작할 것 입니다. 그 외의 라이브러리 별 특수 상황에 대해서는 이 페이지의 각 라이브러리 별 섹션에 표기 하였습니다.

왜 통합 라이브러를 포함하고 있나요?

미디어 라이브러리를 사용하게 됨에 따라 앱에서 이미 사용하고 있는 네트워킹 라이브러리에 영향을 주거나 이미지를 로드하는데만 사용하기 위한 별도의 네트워킹 라이브러리를 추가해야 할 필요가 없다고 봅니다. 통합 라이브러리와 Glide 의 ModelLoader 시스템을 통해 개발자가 앱 전체에 걸쳐 일관된 플랫폼을 사용할 수 있게 하였습니다.

라이브러리 XXX 는 왜 없나요?

아직 여러분이 Glide 용으로 안 만들어 주셨으니까요!(^^) OkHttp 와 Volley 가 많은 개발자들에게 인기 있는 라이브러리여서도 포함된 것도 있지만, 단언컨대 다른 라이브러리가 그렇지 않아서 포함이 안 된 것은 아닙니다. 만약에 여러분의 앱을 위한 다른 라이브러리의 ModelLoader 를 작성하시고 이를 오픈소스화 시키셨다면, 저희에게 pull 리퀘스트를 보내주시면 감사하겠습니다.

어떤 버전의 통합 라이브러리를 사용해야 할까요?

Glide v4 부터는 통합 라이브러리와 Glide 의 버전을 동일하게 맞추고 있습니다. 통합 라이브러리의 버전과 메인 Glide 의 버전이 정확히 일치해야 합니다. 만약 다른 버전을 사용하시게 될 경우, 크래쉬나 빌드 에러, 나아가 알 수 없는 동작을 하게 될 수도 있습니다.

OkHttp, Volley 나 다른 써드 파티 라이브러리의 특정 버전을 사용하고 싶다면 어떻게 할까요?

Glide 에서 사용하는 OkHttp 나 Volley 와 같은 써드 파티 라이브러리들은 각각 고유의 버전 시스템을 가지고 있습니다. 일반적으로 통합 라이브러리들은 Maven 이나 Gradle 를 통해 써드 파티 라이브러리에 의존성을 가지게 됩니다. Gradle 이나 Maven 을 사용해서 통합 라이브러리의 의존성을 설정 할 경우, 명시적으로 사용하고자 하는 써드 파티 라이브러리의 버전을 적어주면 됩니다.

예를 들어, Glide 의 okhttp-integration 를 사용하고자 하는 OkHttp 라이브러리의 버전으로 오버라이드 하고 싶은 경우, OkHttp 3.9.1 를 다음과 같이 적어주면 됩니다. :

implementation com.squareup.okhttp3:okhttp:3.9.1
implementation com.github.bumptech.glide:okhttp-integration:4.7.1

나아가, okhttp-integration 사용시 OkHttp 에 대한 이행적 의존성을 제외 할 수도 있습니다.:

implementation (com.github.bumptech.glide:okhttp-integration:4.7.1) {
  exclude group: com.squareup.okhttp3, module: okhttp
}

혹은, okhttp-integration 에 대한 모든 이행적 의존성을 제거 할 수도 있습니다.:

implementation (com.github.bumptech.glide:okhttp-integration:4.7.1) {
  transitive = false
}

통합 라이브러리를 사용하면서, ModelLoaders 나 기타 구성 요소를 직접 등록하고 싶으면 어떻게 하나요?

기본적으로 대부분의 통합 라이브러리들은 프로젝트에 의존성을 설정할 경우 자동적으로 등록되는 LibraryGlideModule 를 가지게 됩니다. 가끔 이 기본 컴포넌트를 등록하지 않거나, 다른 순서로 등록하거나 커스텀하게 사용하는 것이 필요할 때가 있습니다. 이를 위해서는 다음과 같이 할 수 있습니다.

  1. Glide 의 어노테이션 프로세서에 기본 LibraryGlideModule 이 적용되는 것을 막으려면, 제외하고자 하는 LibraryGlideModule 클래스를 참조하는 AppGlideModuleExcludes 를 붙여주면 됩니다. :

    @Excludes(com.example.unwanted.GlideModule.class)
    @GlideModule
    public final class MyAppGlideModule extends AppGlideModule { }
    

    자세한 내용은 설정 페이지 를 참고하시기 바랍니다.

  2. LibraryGlideModuleAppGlideModule 를 등록하려면 : 사용자의 AppGlideModuleregisterComponents 를 구현하고 해당 메소드에 ModelLoader 나 추가하고픈 컴포넌트를 작성해 줍니다. :

    @GlideModule
    public class YourAppGlideModule extends AppGlideModule {
      @Override
      public void registerComponents(Context context, Glide glide, Registry registry) {
        registry.append(Photo.class, InputStream.class, new CustomModelLoader.Factory());
      }
    }
    

    자세한 내용은 설정 페이지 를 참고하시기 바랍니다.