集成库-与其他库相整合
介绍
什么是集成库(Integration Library)
Glide包括一系列小巧可配置的集成库,这些库可以让Glide与外部的库相结合。现在集成库可以使Glide支持Volley和OkHttp的http/https请求。
我们坚信,您所选择的客户端媒体库既不应该决定你在你的应用程序中使用的网络库,也不需要你仅仅为了加载图像额外添加网络库。集成库和Glide的ModelLoader系统,允许开发人员对所有网络请求使用统一的网络库。
为什么没有XXX库的实现
因为我们还没有为这个库写集成库。OkHttp和Volley是十分流行的库,许多开发者都使用,但是,我们不是排斥其他库,如果你写了其他库的ModelLoader
并且打算开源,我们很乐意看到这样的提交请求(pull request)。
我如何依赖一个集成库呢?
依赖任何的集成库需要两g个步骤。
- 添加相应的继承库的Maven/Gradle/jar依赖,因为作为可选项的集成库并不包含在glide的jar依赖中。
- 确保app包含了集成库的GlideModule,具体内容看配置wiki部分。对于Glide集成库的具体说明见下面。
我应当选择哪个版本?
集成库的版本跟随着Glide的release版本。但是多了一个不同的数字。确保选择与所依赖的Glide对应的集成库。在release页查看. 网络库有自己的版本号。继承库会依赖的库就是你在Maven/Gradle中指定的库。你可以通过版本号来指定具体依赖的网络库。??
Volley
Volley是一个Http库,可以使Android上的网络请求更简单,更快速。
Gradle中使用Volley
dependencies {
compile 'com.github.bumptech.glide:volley-integration:1.3.1@aar'
//compile 'com.mcxiaoke.volley:library:1.0.8'
}
集成库的GlideModule
会自动合并到你app的manifest中。
Maven中是Volley
<dependency>
<groupId>com.github.bumptech.glide</groupId>
<artifactId>volley-integration</artifactId>
<version>1.3.1</version>
<type>aar</type>
</dependency>
<dependency>
<groupId>com.mcxiaoke.volley</groupId>
<artifactId>library</artifactId>
<version>1.0.8</version>
<type>aar</type>
</dependency>
请查看对应的manifest章节,了解如何添加对应的GlideModule。
手动添加Volley
从release页下载glide-volley-integration-
请查看对应的manifest章节,了解如何添加对应的GlideModule。
Volley的Manifest
如果你使用那些不支持manifest合并的编译系统(如Maven,Ant),你必须手动添加GlideModule
的metadata标签到AndroidManifest.xml
中。
<meta-data
android:name="com.bumptech.glide.integration.volley.VolleyGlideModule"
android:value="GlideModule" />
Volley的混淆设置
无论使用什么编译系统,不要混淆VolleyGlideModule
类,它需要被反射来实例化。添加下面的代码到proguard.cfg
文件(或者查看“通用部分”)。
-keep class com.bumptech.glide.integration.volley.VolleyGlideModule
OkHttp
OKHttp是一个高效且易于使用的Http客户端。
Gradle中使用OkHttp
dependencies {
compile 'com.github.bumptech.glide:okhttp-integration:1.3.1@aar'
//compile 'com.squareup.okhttp:okhttp:2.2.0'
}
集成库的GlideModule
会自动合并到你app的manifest中。
Maven中使用OkHttp
<dependency>
<groupId>com.github.bumptech.glide</groupId>
<artifactId>okhttp-integration</artifactId>
<version>1.3.1</version>
<type>aar</type>
</dependency>
<!--
<dependency>
<groupId>com.squareup.okhttp</groupId>
<artifactId>okhttp</artifactId>
<version>2.2.0</version>
<type>jar</type>
</dependency>
-->
请查看对应的manifest章节,了解如何添加对应的GlideModule。
手动添加OkHttp
从release页下载glide-okhttp-integration-
请查看对应的manifest章节,了解如何添加对应的GlideModule。
OkHttp的Manifest
如果你使用那些不支持manifest合并的编译系统(如Maven,Ant),你必须手动添加GlideModule
的metadata标签到AndroidManifest.xml
中。
<meta-data
android:name="com.bumptech.glide.integration.okhttp.OkHttpGlideModule"
android:value="GlideModule" />
OkHttp的混淆设置
无论使用什么编译系统,不要混淆OkHttpGlideModule
类,它需要被反射来实例化。添加下面的代码到proguard.cfg
文件(或者查看“通用部分”)。
-keep class com.bumptech.glide.integration.okhttp.OkHttpGlideModule
更多选项
通用的混淆配置
你也可以使用下面的配置来避免混淆所有的GlideModule
。
-keep public class * implements com.bumptech.glide.module.GlideModule
这种方式有其他的好处,当修改集成库或者自定义集成库的行为时,不需要修改。当你添加或者移动其他module的时候,也不需要修改什么。
覆盖默认的行为
如果默认配置无法满足你,所有的集成库还有一些额外的选项。比如添加重试行为,请查看集成库的GlideModule
的源码(位于/integration/GlideModule
中修改参数为UrlLoader.Factory
类来改变默认行为。
当你要覆盖默认行为时,请确保自定义的GlideModule
被注册,且默认的GlideModule被排除在外。排除GlideModule可能是从manifest中移除相应的的metadata,或者使用jar包依赖代替aar依赖。关于GlideModule
的更多信息请查看配置的wiki页