错误日志
使用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异常警告。
配置
api 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
module使用Glide版本为4.11.0。
解决方案
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
/**
* Created by ... on ...
* Description: ...
*/
@GlideModule
public class MAppGlideModule extends AppGlideModule {
}
创建MAppGlideModule继承AppGlideModule,并添加注解@GlideModule即可解决上述问题。
选修
当应用程序和其module依赖了同一module中的Glide,需要在MAppGlideModule中重写isManifestParsingEnabled方法并返回false:
@Override
public boolean isManifestParsingEnabled() {
return false;
}
如果想实现自己需要的配置可以在MAppGlideModule中重写applyOptions:
@Override
public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
...;
}
通过GlideBuilder实现自定义配置:
public final class GlideBuilder {
private final Map<Class<?>, TransitionOptions<?, ?>> defaultTransitionOptions = new ArrayMap<>();
private Engine engine;
private BitmapPool bitmapPool;
private ArrayPool arrayPool;
private MemoryCache memoryCache;
private GlideExecutor sourceExecutor;
private GlideExecutor diskCacheExecutor;
private DiskCache.Factory diskCacheFactory;
private MemorySizeCalculator memorySizeCalculator;
private ConnectivityMonitorFactory connectivityMonitorFactory;
private int logLevel = Log.INFO;
private RequestOptionsFactory defaultRequestOptionsFactory =
new RequestOptionsFactory() {
@NonNull
@Override
public RequestOptions build() {
return new RequestOptions();
}
};
@Nullable private RequestManagerFactory requestManagerFactory;
private GlideExecutor animationExecutor;
private boolean isActiveResourceRetentionAllowed;
@Nullable private List<RequestListener<Object>> defaultRequestListeners;
private boolean isLoggingRequestOriginsEnabled;
private boolean isImageDecoderEnabledForBitmaps;
...
}
自定义的配置包括缓存,线程等等,开发者可根据实际需要自定义。