添加Glide v4

时间:2017-09-15 06:17:44

标签: android proguard android-glide

添加glide v4库后,我无法生成带有proguard的apk。 我在proguard-rules

中添加了以下行
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.AppGlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}

它在构建时显示以下错误。

  

警告:com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool:   无法找到参考字段' android.graphics.Bitmap $ Config HARDWARE'   在库类android.graphics.Bitmap $ Config

4 个答案:

答案 0 :(得分:2)

使用以下命令忽略这些警告:

-dontwarn com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool
-dontwarn com.bumptech.glide.load.resource.bitmap.Downsampler
-dontwarn com.bumptech.glide.load.resource.bitmap.HardwareConfigState

请参阅此post

答案 1 :(得分:0)

我假设您从this glide page接受了您的proguard规则,但它被误写了。替换下面的行

-keep public class * extends com.bumptech.glide.AppGlideModule

用这个:

-keep public class * extends com.bumptech.glide.module.AppGlideModule

如您所见,module包丢失了。它也有适当的记录on README page。您还可以从外部库检查AppGlideModule类路径。

答案 2 :(得分:0)

<强> Proguard的

如果您使用proguard,则可能需要将以下行添加到proguard.cfg中:

-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}

如果您是targeting any API level less than Android API 27,还请包含:

-dontwarn com.bumptech.glide.load.resource.bitmap.VideoDecoder

VideoDecoder使用API​​ 27 API,即使在使用旧版Android的设备上不会调用较新的API,也可能会导致预警警告。

答案 3 :(得分:-1)

您也可以将compileSdkVersion增加到26.这会照顾Glide v4使用的新功能。