Android 性能优化之使用Lint

代码静态检查推荐:html

(1)Android自定义Lint实践android

(2)美团外卖Android Lint代码检查实践程序员

(3)Android自定义Lint实践2——改进原生Detector安全

Lint 是 Android Studio 提供的 代码扫描分析工具,它能够帮助咱们发现代码结构/质量问题,同时提供一些解决方案,并且这个过程不须要咱们手写测试用例。服务器

Lint工做方式简介app

Lint 会根据预先配置的检测标准检查咱们 Android 项目的源文件,发现潜在的 bug 或者能够优化的地方,优化的内容主要包括如下几方面:工具

  • Correctness:不够完美的编码,好比硬编码(国际化问题)、使用过期 API 等布局

  • Performance:对性能有影响的编码,好比:静态引用,循环引用等,性能

    布局性能(之前是 layoutopt工具,能够解决无用布局、嵌套太多、布局太多、overdraw)测试

    其余性能(如:draw/layout 时进行对象的声明等)

  • Internationalization:国际化,直接使用汉字,没有使用资源引用等

  • Security:不安全的编码,好比在 WebView 中容许使用 JavaScriptInterface 等

  • 其余等等。

Lint 检测代码的过程以下图所示:

  • App 源文件:包括 Java 代码,XML 代码,图标,以及 ProGuard 配置文件等

  • lint.xml:Lint 检测的执行标准配置文件,咱们能够修改它来容许或者禁止报告一些问题

Android Studio中使用Lint

Android Studio 中内置了 Lint,咱们小手一点就能够直接使用。

Lint 的使用路径:工具栏 -> Analyze -> Inspect Code…

点击 Inspect Code 后会弹出检查范围的对话框:

默认是检查整个项目,咱们能够点击 Custom scope 自定义检查范围。

点击右边的下拉框,会出现如下选择:

分别有:

  • Project Files:全部项目文件

  • Project Production Files:项目的代码文件

  • Project Test Files:项目的测试文件

  • OpenFiles:当前打开的文件

  • Module ‘app’:主要的 app 模块

  • Current File:当前文件

  • 其余一些

除了内置的选项咱们还能够本身选择特定的类进行检查,点击下图中的红色框部分:

 会弹出自定义范围选择框,默认是空的,咱们能够点击左上角的“+”号新增一个检查范围:

  • Local:只能当前项目使用

  • Shared:其余 Android Studio 项目也可使用

咱们选择 Shared,而后起个帅气的名字 “ShixinCuteLint”,默认按项目显示,这时检查的文件数为 0 :

上图中右边的四个按钮表示要操做的类型:

  • Include:包括当前文件夹内的文件,但不包括他的子文件夹

  • Include Recursively:包括当前文件夹以及它的子文件夹内全部的文件夹,递归添加

  • Exclude:移除当前文件夹,不包括子文件夹

  • Exclude Recursively:移除当前文件夹及全部子文件夹

咱们点击左边的 app 文件夹后,点击右边的 Include Recursively 按钮,把 app 下的全部文件添加到检查列表:

 

能够看到,这时 app 下的文件都变绿了,总共有 689 个文件夹要扫描。

点击 OK 进行检测,稍等一下子,会弹出 Inspection 对话框,显示检查结果,没想到个人代码竟然有 1769 个警告!这数字触目惊心啊:

咱们主要关注红框内的警告,先来看看个人代码 Performance 有什么问题:

咱们主要关注红框内的警告,先来看看个人代码 Performance 有什么问题:

 

哈哈,没想到我还有这么多进步空间!

上图能够看到,Lint 真是神器,能够帮咱们发现本身忽略或者没有意识到的问题,尤为是性能方面,若是你以为本身代码想优化又不知道从何作起,不妨让 Lint 给你指指路。

 团队创建代码规范利器

提高、下降问题的等级

虽然 Lint 能够帮咱们检查代码的问题,但多人合做时,咱们更指望能够在写代码时就发现问题、解决问题。

鉴于团队成员中水平参差不齐,靠我的意识有时候很难保证质量,这时能够修改 Lint 对于特定问题的警告等级,以最直观的 IDE 提示来警醒成员。

Lint 的警告严重程度有如下几种:

  • Unused Entry:没有使用的属性,灰色,很不起眼

  • Typo:拼写错误,绿色波浪下划线,也不太起眼

  • Server Problem:服务器错误?好像不是

  • Info:注释文档,绿色,比较显眼

  • Weak Warning:比较弱的警告,提示比较弱

  • Warning:警告,略微显眼一点

  • Error:错误,最显眼的一个

平常开发中,好一点的程序员会关注 Warning 的警告,根据警告优化代码,但那也只是不多一部分。可是红色的 Error 就不同了,基本上看到就想要消灭掉。

咱们拿命名拼写错误举个例子。

类、对象、遍历拼写错误看起来不是什么问题,可是若是你见过大量的无心义或者错误命名,你必定会赞同个人接下来作法。

默认的拼写错误是 Typo ,提示很弱,因此常被人忽略:

 

上面的 String 类型变量 login 写成了 logn,Lint 默认对拼写错误是个下滑波浪线,很不起眼。咱们修改一下。

打开 Preferences/Settings,搜索 Inspections,会出现 Lint 的检测配置页面:

 

要修改拼写的警告等级,搜索“spelling”: 

 而后选择出现的 Typo,再点击右边的 Severity 就是严重程度,改为 Error,OK。

能够看到,如今拼写错误就会出现红色的错误警告了,让你很差好写变量名!

Lint的禁用

Lint 报的某些警告的确是不必,这时咱们能够选择忽略这些警告。忽略警告能够分两种:

1. 在 Java 代码中

2. 在 XML 文件夹中

在 Java 代码中忽略 Lint 警告

忽略 Lint 警告的注解跟 @SuppressWarnings 很相似,@SuppressLint(“忽略的警告名称”)。

下面的代码演示了如何忽略 Lint 对使用新 API 的警告:

要是你不清楚要忽略的警告具体是什么名字,那就直接忽略 all,固然是当前类/方法/对象:

1 @SuppressLint("all")

在 XML代码中忽略 Lint 警告

只需两步:

1. xml 中声明 tools 命名空间

2. 使用 tools:ignore=”忽略的警告名”

例如:

 Gradle配置Lint

Gradle 中也能够配置 Lint 的关键操做,好比是否开启 Lint 警告,或者关闭指定的警告。

在 module 下的 build.gradle 中添加 lintOptions{…}, 样例代码以下:

自动删除无用资源文件 

代码迭代版本一多,很容易会遗留一些无用的代码、资源文件,咱们可使用 Lint 进行清除。

点击 Android Studio 工具栏 -> Analyze -> Run Inspection By Name..,输入要检测的内容,这里是无用资源:

而后选择 Unused resources,再选择范围后就开始检测。

检测出这么多无用文件:

 注意,右边有解决方法:Remove All Unused Resources,放个大图显眼一点:

相关文章
相关标签/搜索