Lint简介
Android lint是在ADT16提供的新工具,它是一个代码扫描工具,能够帮助我们识别资源、代码结构存在的问题。
Lint有诸多优势:

功能强大,Lint支持Java源文件、class文件、资源文件、Gradle等文件的检查。扩展性强,支持开发自定义Lint规则。配套工具完善,Android Studio、Android Gradle插件原生支持Lint工具。Lint专为Android设计,原生提供了几百个实用的Android相关检查规则。有Google官方的支持,会和Android开发工具一起升级完善。

Lint优化哪些问题

遗漏的翻译(没用上的翻译)比如国际化未被翻译的字段值布局性能(以前是 layoutopt工具,可以解决无用布局、嵌套太多、布局太多)未使用到资源不一致的数组大小国际化问题(硬编码)图标的问题(重复的图标,错误的大小)可用性问题(如不指定的文本字段的输入型)manifest文件的错误

Lint 发现的每个问题都有描述信息和等级,我们可以很方便地定位问题,同时按照严重程度进行解决。当然这个“严重程度”我们可以手动调节,有些原则问题不容侵犯,必须提升到 error,而有的个别问题也可以无视。
但是我们也不能过分依赖该工具,因为有些东西实际开发中会有自己的规则,有可能会出现冲突的地方。

Lint问题种类

Correctness 不够完美的编码,比如硬编码、使用过时 API 等
Performanc 对性能有影响的编码,比如:静态引用,循环引用等
Internationalization 国际化,直接使用汉字,没有使用资源引用等
Security 不安全的编码,比如在 WebView 中允许使用 JavaScriptInterface 等
Usability 可用的,有更好的替换的 比如排版、图标格式建议.png格式 等
Accessibility 辅助选项,比如ImageView的contentDescription往往建议在属性中定义 等

Android性能优化之 Android Lint_第1张图片

常见如下

1. Correctness    1) DuplicatedIds    Layout中id应该唯一    2) NewApi    代码中使用的某些API高于Manifest中的Min SDK    3) InconsistentArrays    字符串国际化中,同一名字的的String-Array对应的item值不相同    4) Registered    Activity/Service/ContentProvider没有通过AndroidManifest注册    5) Deprecated    使用已经废弃的API    6) PxUsage    避免使用px,使用dp2. Correctness:Messeges    1) MissingTranslation    字符串国际化不完全    2) ExtraTranslation    国际化的字符串,在默认位置(defaultlocale),没有定义3. Security    1) SetJavaScriptEnabled    不确定你的程序中确实需要JavaScript就不要执行SetJavaScriptEnabled。    2)ExportedContentProvider/ExportedReceiver/ExportedService/ExportedActivity    ContentProvider/Receiver/Service/Activity的exported为true时,设置一个Permission,让使用者获取了Permission才能使用。    3) HardcodedDebugMode    不要在manifest中设置android:debuggable。    设置它,编译的任何版本都要采用指定的debug模式。不设置,编译Eng版本采用debug模式;编译User版本采用release模式。4. Performance    1) DrawAllocation    避免在绘制或者解析布局(draw/layout)时分配对象。E.g.,Ondraw()中实例化Paint对象。    2) ObsoleteLayoutParam    Layout中无用的参数。    3) UseCompoundDrawables    可优化的布局:如包含一个Imageview和一个TextView的线性布局,可被采用CompoundDrawable的TextView代替。    4) UseSparseArrays    尽量用Android的SparseArray代替Hashmap    5) DisableBaselineAlignment    如果LinearLayout被用于嵌套的layout空间计算,它的android:baselineAligned属性应该设置成false,以加速layout计算。    6) FloatMath    使用FloatMath代替Math。    7) NestedWeights    避免嵌套weight,那将拖累执行效率    8) UnusedResources/UnusedIds    未被使用的资源会是程序变大,并且编译速度降低。    9) Overdraw    如果为RootView指定一个背景Drawable,会先用Theme的背景绘制一遍,然后才用指定的背景,这就是所谓的“Overdraw”。    可以设置theme的background为null来避免。    10) UselessLeaf/UselessParent    View或view的父亲没有用5. Usability:Typography    1) TypographyDashes    特殊字符需用编码代替:“–”需要用“–”;“—”需要用“—”    2) TypographyEllipsis    特殊字符需用编码代替:“…”需要用“…”    3) TypographyOther    问题:“(c)”需要用“©”6. Usability:Icons    1) IconNoDpi    Icon在nodpi和指定dpi的目录下都出现。    2) GifUsage    Image不要用GIF,最好用PNG,可以用JPG。7. Usability    1) BackButton    Android中不要设计有Back的按钮,Android中一般有Back的硬按键。    2) ButtonCase    Button的“Ok”/“Cancel”显示大小写一定,不要全大写或全小写。有标准的资源的字符串,不要自己再定义,而要用系统定义的:@android:string/ok和@android:string/cancel8. Accessibility    1) ContentDescription    ImageView和ImageButton应该提供contentDescription    9. Internationalization    1) HardcodeText    硬编码的字符串应该在资源里定义    2) EnforceUTF8    所有XML资源文件都应该以UTF-8编码    ...

参考
https://blog.csdn.net/luzhenyuxfcy/article/details/79398761
更多相关操作
https://blog.csdn.net/DickyQie/article/details/79950167 美团的Lint代码检查实践

更多相关文章

  1. Android 学习笔记-布局2
  2. android字符串资源字符format
  3. Android之Android apk动态加载机制的研究(二):资源加载和activity生
  4. android:layout_alignParent 布局相对于父布局
  5. Android四大布局之表格布局行列位置控制
  6. 从零开始学android开发-布局中 layout_gravity、gravity、orient

随机推荐

  1. 解决 android.content.ActivityNotFoundE
  2. Android(安卓)应用程序窗体显示状态操作(
  3. android监听SD卡状态
  4. Android常见错误处理(三)
  5. Android滑动冲突解决方法
  6. android panic堆栈分析工具panic.py
  7. android 由entity创建创建表的sql语句
  8. android 文件存储
  9. C#开发android之alertdialog用法
  10. Android 二级动画弹出菜单