你的硬盘上有重复的文件么?我指的不是备份出来的文件,而是同一个文件的没有用的复本,可能是你不知不觉中
下载或多次创建的。DoubleKiller能帮你把他们找出来。尽管这个程序使用起来有些别扭(例如在你使用第一个标签功能之前必须先设置第二个标签),但是这个程序可以搜索不同
驱动器的指定类型文件,查找文件名、大小、创建时间或CRC32校验相同的文件。完成搜索后,DoubleKiller可以让你批量选择是移动还是删除文本去重复
为什么资源文本去重复容易引起bug
依赖关系
DoubleKiller安卓资源文本去重复图一
同名布局文件a.xml,如果同时存在于主工程和插件工程,编译的结果会以主工程a.xml的为准。
这会引起两个问题
UI优化的时候,改在插件工程,代码审核的时候没问题,但是实际没起作用(被主工程覆盖了)
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)
DoubleKiller安卓资源文本去重复图二
如何解决
扫描各项插件工程和主工程的src/main/res下的重名资源文件,优先剔除主工程里面的文件。
借助工具可以帮助我们简化这个步骤,网上找了下DoubleKiller 还不错,就不自己造轮子了。
使用方式很简单,打开程序,点击运行,会提示你添加扫描目录,把res目录下的一一添加,点击运行即可
DoubleKiller安卓资源文本去重复图三
扫描速度很快(好奇使用了啥算法,比国产的几个软件快很多),我们根据主工程、插件工程重名的原则去重。插件
DoubleKiller安卓资源文本去重复图四
以上就是DoubleKiller安卓资源文本去重复