升级Glide4.x的问题汇总
错误信息:W/Glide:Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a @GlideModule annotat..
问题一:Failed to find GeneratedAppGlideModule. You should include an annotationProcessor c
错误信息:
W/Glide:
Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a @GlideModule annotated AppGlideModule implementation or LibraryGlideModules will be silently ignored
原因是:annotationProcessor ‘com.github.bumptech.glide:compiler:4.9.1’,这个依赖只在 glid封装库 中依赖,没有在主工程依赖。
因为我的glide是一个自己的封装库,封装库内有依赖annotationProcessor ‘com.github.bumptech.glide:compiler:4.9.0’,但主工程却没依赖,导致主工程中不能使用注解@GlideModule,这样就MyAppGlideModule没生效了,这样也导致LibraryGlideModule的所有子类无效。
@GlideModule
public class MyAppGlideModule extends AppGlideModule {
@Override
public boolean isManifestParsingEnabled() {
return false;
}
}
解决方法:主工程也依赖annotationProcessor 'com.github.bumptech.glide:compiler:4.9.1’即可
参考:
关于glide4.7.1使用找不到GlideApp的问题
问题二:GeneratedAppGlideModuleImpl is implemented incorrectly.
错误信息:
GeneratedAppGlideModuleImpl is implemented incorrectly. If you’ve manually implemented this class, remove your implementation. The Annotation processor will generate a correct implementation.
分析: 说你显示实现了GeneratedAppGlideModuleImpl,然而你并没有。
跟进错误点:
反射 调用GeneratedAppGlideModuleImpl的带参数(context)的构造方法,但是发现 你现在的GeneratedAppGlideModuleImpl是构造方法是无参数的,很显然自动生成有问题。
解决方法:
再看看,引入的glide版本号是4.11.0,而compiler的版本号是4.9.0,尝试把compiler的版本号更为4.11.0,再试试,发现此时生成的GeneratedAppGlideModuleImpl是带参数(context)的构造方法了。
所以compiler的版本号 要和 glide 一致即可啦。问题解决。
问题三:透明背景的gif,显示黑色背景
问题:这张透明背景的Gif动图,使用Glide加载后,本该透明的地方变为黑色了。
原因:在配置RequestOptions的图片格式时, 我使用了format方法设置为DecodeFormat.PREFER_RGB_565。
RequestOptions options = new RequestOptions()
.format(DecodeFormat.PREFER_RGB_565)
其中这个方法实现是:同时配置bitmap和Gif的格式。Gif图配置PREFER_RGB_565 透明底就会变黑底(因为PREFER_RGB_565没有透明通道)。源码如下
public T format(@NonNull DecodeFormat format) {
Preconditions.checkNotNull(format);
return set(Downsampler.DECODE_FORMAT, format)
.set(GifOptions.DECODE_FORMAT, format);
}
解决方法:单独配置gif即可
RequestOptions options = new RequestOptions()
.format(DecodeFormat.PREFER_RGB_565)
.set(GifOptions.DECODE_FORMAT,DecodeFormat.DEFAULT)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)