Lint简要来说,有以下的作用:
布局性能(以前是 layoutopt工具,可以解决无用布局、嵌套太多、布局太多) 未使用到资源 不一致的数组大小 国际化问题(硬编码) 图标的问题(重复的图标,错误的大小) 可用性问题(如不指定的文本字段的输入型) manifest文件的错误 内存泄露 — 如:handle的不当使用 。 占内存的资源及时回收 — 如:cursor未关闭等
Lint打开方式
菜单栏【 Analyze】 ——【Inspect Code】
AS的Lint配置
打开设置Setting对话框,找到Editor,然后是Inspections,选择某一个Lint选项,修改严重等级。
Lint检查的常见类型:
1.Correctness:Messeges
(1)字符串国际化不完全
(2)国际化的字符串,在默认位置(default locale),没有定义
2.Correctness
- (1)Xml中view的id重名
- (2)代码中使用的某些API高于Manifest中的Min SDK
- (3)字符串国际化中,同一名字的的String-Array对应的item值不相同 (4)Activity没有注册到Manifest
- (5)使用已经废弃的api
- (6)避免使用px,使用dp
- (7)添加不需要的权限
3.Performance
- (1) 避免在绘制或者解析布局(draw/layout)时,分配对象。eg,Ondraw()中实例化Paint().
- (2)Layout中无用的参数。
- (3)可优化的布局:如一个线性布局(一个Imageview和一个TextView),可被TextView和一个Compound Drawable代替。
- (4)可优化的代码:如SparseArray可代替一个Interger2Object的Hashmap
- (5)优化layout,比如如果子view都是wrap_content,则设置android:baselineAligned为false,则When set to false, prevents the layout from aligning its children’s baselines.
- (6)使用FloatMath代替Math,执行sin()和ceil(),以避免float的两次转换。
- (7)Nested weight (内外均有weight)将拖累执行效果
- (8)未被使用的资源
- (9)Overdraw 即指定theme的activity会自己绘制背景,但是布局中会再一次设置背景
- (10)View或view的父亲没有用
4.Security
(1)设置setJavascriptEnable将导致脚本攻击漏洞(XSS vulnerabilities)
5.Usability:Icons
(1) 图片尺寸在转换成不同dpi时,存在不能整除的问题,比如2*24px
(2)显示有些base 和browser的资源名不同,但图片内容完全相同。
6.Usability
(1)自定义view缺少默认的构造方法
7.Usability:Typography
(1)特殊字符需用编码代替,如“_”需要用“–”
8.Accessibility
(1)ImageView缺少src内容
参考链接: