安卓资源文件去重

为什么重复文件容易引起bug

依赖关系

同名布局文件a.xml,如果同时存在于主工程和插件工程,编译的结果会以主工程a.xml的为准。
这会引起两个问题

  1. UI优化的时候,改在插件工程,代码审核的时候没问题,但是实际没起作用(被主工程覆盖了)
  2. a.xml里有个TextView,主工程里ID叫tv_app,插件工程里ID叫tv_library

因为编译后,插件tv_library会被覆盖成tv_app,所以插件工程里,访问tv_library相关的findViewById()崩溃

找不到tv_library资源崩溃,Caused by: java.lang.NoSuchFieldError: No static field tv_library of type I in class Landroid/kimmy/net/mylibrary/Rid; or its superclasses (declaration of 'android.kimmy.net.mylibrary.Rid' appears in /data/app/android.kimmy.net.myapplication-1/base.apk)
at android.kimmy.net.mylibrary.CustomView.initViews(CustomView.java:37)

插件工程问题代码.png

如何解决

扫描各项插件工程和主工程的src/main/res下的重名资源文件,优先剔除主工程里面的文件。

借助工具可以帮助我们简化这个步骤,网上找了下DoubleKiller 还不错,就不自己造轮子了。下载地址: https://pan.baidu.com/s/1Ix3FivsrUeSyVcAVRBEDeA 提取码: k9sn

使用方式很简单,打开程序,点击运行,会提示你添加扫描目录,把res目录下的一一添加,点击运行即可


TIM图片20170519151223.png

扫描速度很快(好奇使用了啥算法,比国产的几个软件快很多),我们根据主工程、插件工程重名的原则去重。插件

TIM截图20170519151344.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,941评论 25 709
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,650评论 2 45
  • 我在做咨询的过程中,发现有这样两类人特别常见。 第一种,胆子特别小,一直否定自己,觉得自己能力不足,做什么都不行。...
    生之惑阅读 4,620评论 0 4
  • 日精进 我每天的工作:每天要熟记客人信息,耐心和客人沟通 ,详细并合理登记预约洗澡时间和需要用车时间。合理,明确,...
    吕志萍阅读 825评论 0 3
  • A我今天学了什么 1animation 动画 B我掌握了什么 1 c我没掌握什么
    Rosemarry丶阅读 1,014评论 0 0