Android lint 自动检测并删除无用资源
2015-10-17 00:04
381 查看
Android lint 自动检测并删除无用资源
最近做项目优化,其中一项是减少apk包大小,使用到Android 提供的 Lint 检查工具。安装包从原来的 8M 减小大现在的 5M 左右,主要就是一些不再使用资源文件,layout ,drawable 下的图片,asset 里面的资源。先说优化过程,后面再解释原理。环境配置:
1.Android Studio 1.4
2.lint 24.3.4
3.android-resource-remover
检测过程
1.配置build 文件
// android 选项 下面 添加lint 检测设置 lintOptions { //build release 版本 时 开启lint 检测 checkReleaseBuilds true //lint 遇到 error 时继续 构建 abortOnError false }
2.lint检测
在 Android Studio 终端选项下 执行 命令gradle lint
在 yoru_project_dirctory/build/outputs/ 会生成 两个文件 lint-result.xml, lint-result.html 和文件夹 lint-result-files. 最重要的是 lint-result.xml 文件,里面包含了我们要解析的信息,包含项目中不再使用的资源文件信息。
3.执行 命令
android-resource-remover --xml lint-result.xml
android-resource-remover 安装和使用, 请查考github 上的说明。
执行完这个命令,项目中不再使用的资源文件,包含 string ,color ,value等,全都被删除掉,是不是感觉超级方便。
一般的项目,这样使用都是没问题的,但是如果你的项目中第三方jar ,jar中有使用到资源文件,这些文件也会被一起删除。有没有办法解决这个问题呢 ? 当然有,方法如下。
找到 在jar 中 调用的layout 文件 在根目录 下添加如下属性
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content" <--最关键的一条属性--> tools:ignore="all" > <ImageView android:id="@+id/ixintui_custom_notif_icon" android:layout_width="48dp" android:layout_height="48dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:contentDescription="@android:string/unknownName"/> <TextView android:id="@+id/ixintui_custom_notif_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toLeftOf="@+id/ixintui_custom_notif_time" android:layout_toRightOf="@+id/ixintui_custom_notif_icon" android:layout_marginTop="10dp" android:layout_marginLeft="4dp" android:textAppearance="@android:style/TextAppearance.Medium" android:singleLine="true" android:ellipsize="marquee" android:fadingEdge="horizontal" tools:ignore="all" /> </RelativeLayout>
最重要的一个属性 tools:ignore = “all” 其中 all 也可以是其他的lint check id ,最常用的还有 “UnUsedResource” 。
参考资料
lint guard
android-resource-remover
Android lint 删除无用图片文件和配置文件
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories