android 组件化,资源无法正常读取?

我有两个moduleappbase ,其中app依赖base
我在app中想要加载一张图片R.mipmap.ic_launcher

这是我的代码

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
  1. 如果我的ic_launcher是在app模块下的话,这时bitmap为空。后续操作就会有问题
  2. 我如果使用ImageViewsrc:来加载图片的话是可以显示出来的。
  3. 当我把图片从app移动到base下后,同样的代码获取到的bitmap又不为空了。
  4. 如果我用getResources().getDrawable(R.mipmap.ic_launcher)是可以获取到Drawable对象的。

所以我想问下是这个资源文件转Bitmap的方法有问题吗?

我查看了ImageView的源码发现ImageView是将资源转换为Drawable对象。
ic_launcher存在于app下时,R.mipmap.ic_launcher是有值的。
我调用的BitmapFactory.decodeResource , 最后是走到native方法 DecodeAsset 中,已经超出我能力范围了。

我的代码在这github

阅读 2.8k
1 个回答

原因是多个module都存在相同命名的资源,这时资源id被改变了(待验证),所以找不到了。
解决方法是,确保所有module下的资源文件没有任何两个为相同的。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题