随着业务迭代,应用中的资源会越来越多,同时也会有一些老旧无用资源文件不再被引用。及时清理无用资源可以有效防止包体积增长过快。下面介绍如何在Android Studio中查找无用资源并进行删除。
1. 在工程目录中点击右键,选择Analyze->Run Inspection by Name…
清理无用资源2. 在弹出的对话框中输入unused resource,并点击回车键
搜索unused resource3. 选择搜索范围,然后点击OK键,即可开始自动搜索。
选择搜索范围建议总是选择“Whole project”选项。假如选择指定module,那该module中如果有资源仅被上层模块引用,将会在这种模式下被标记为无用资源,从而造成清理错误。
4. 下面是运行结果页面。
无用资源结果页面右侧有一个按钮“Apply quick fixes to all the problems”。点击该按钮后,IDE会自动将搜索到的所有无用资源一起删除。
5. 关于反射引用资源的问题
在某些情况下,代码中可能会通过反射的方式引用特定资源。这种情况下,如果资源被删除,是很令人沮丧的。
为了避免资源被错误删除,可以这样做:
- 在反射资源的代码附近添加一个资源引用代码(无论该资源是否被其他位置应用,都建议这样做):
// 代码可以像下面这样,既保证了资源的引用,又不影响正式包的运行状态。
if (BuildConfig.DEBUG) {
Log.i("yq", "we need resource " + R.drawable.ic_launcher_foreground);
}
-
在资源中添加注释,表名该资源被反射引用。如果资源是个图片无法添加注释,可以将信息写在commit log中。
-
在使用资源的时候,如果发现资源不存在,不要沉默处理,应该抛出一个运行时异常以方便开发者能够迅速定位问题。
网友评论