安卓资源文件去重

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

安卓资源文件去重_第1张图片
依赖关系

同名布局文件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' 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目录下的一一添加,点击运行即可


安卓资源文件去重_第2张图片
TIM图片20170519151223.png

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

安卓资源文件去重_第3张图片
TIM截图20170519151344.png

你可能感兴趣的:(安卓资源文件去重)