Android打包设置shrinkResources true引发的问题

release版本app部分图片不显示,在debug版本又正常。

将apk解压缩后查看drawable 对应的图片时才发现问题所在:部分表情图片文件只有1k且只显示1个像素。原因是:release版本时在build.gradle中将shrinkResources设置为true。shrinkResources为true在打包时会删除没有用到的资源。因为我的资源需要在服务端返回后动态绑定;
通过这种方式加载:resourceName是后端返的(和drawable中图片的名称一致);图片资源没有检测到被使用;
context.getResources().getIdentifier(resourceName ,defType,context.getPackageName());

解决方案:
一 :shrinkResources置为false;
二 :代码中引用图片资源;我是在一个类的构造方法中创建了一个数组,比如类A:
A (){
int[] ids = {R.drawable.picture1,......};
}
A类 推荐使用导出常量类,私有构造方法;
这样检测时发现图片是被引用的就不会删除;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,852评论 0 17
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,855评论 1 32
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,799评论 19 139
  • 我想用自己浅薄的文字功底记录一下我俩的爱情,一路走来,太多的不容易,我想等自己老了,记忆力不好了,头脑不灵活了,戴...
    Amy二汪的世界阅读 2,571评论 0 0
  • 我将按照之前在如何阅读一本书中所介绍的方法来进行本书的阅读。在本文中将记录详细的读书笔记。 首先提出面对任何一本书...
    沈鑫阅读 5,101评论 0 4