-- 作者 谢恩铭 转载请注明出处

近来有一个Android小项目需要优化, 包括从AndroidManifest.xml删除不必要的permission(权限)。

需要删除的权限有点多, 而我又不是很确定哪些权限对于App是必要的。如果我这样做: 每删除一个权限, 就运行一下App, 看各样功能正常不, 那就太费时间了。

或者, 我可以写Android Instrumentation Test测试来检测每一次删除的permission是不是导致App运行错误。

但这些方法都好麻烦~

有没有更简单快捷的方式呢? 要知道程序员是要懂得偷懒的。

我想到了Lint。

Lint是什么?


Lint是一种工具程式的名称,它用来标记原始码中,某些可疑的、不具结构性(可能造成bug)的段落。

它是一种静态程序分析工具,最早适用于C语言,在UNIX平台上开发出来。后来它成为通用术语,可用于描述在任何一种电脑程式语言中,用来标记原始码中有疑义段落的工具。

Lint规则


Lint检测不少规则, 你可以输入以下命令来查看:

lint --show

Lint的报告


Lint的报告就是Lint检测完指定项目后生成的一个文件, 可以是HTML, XML等格式, 指明了哪些地方需要优化和改正。

Lint报告类似这样:

Lint报告

Lint测试生成的报告还可以被SonarQube这样的开源代码质量管理系统以图表的形式展示出来, 非常利于项目优化。

下次我会写一篇SonarQube配合各种工具生成报告的文章。先来一睹为快吧:

Sonarqube报告

上图是SonarQube的报告示例。

Android项目中使用Lint


Android的Lint官方教程, 需要番茄的链接:

https://developer.android.com/studio/write/lint.html

我们可以在Android Studio的Gradle配置文件中设置Lint的检测规则:

然后, 可以在Android Studio中直接启动Lint检测:

点击Android Studio的菜单栏中的Analyze -> Inspect code, 选择要用Lint检测的项目(当然了, 你也可以不检测所有Lint规则, 而是选择Run Inspection by Name, 然后输入规则名字, Lint就只会检测此项规则 ), 可以是整个Project, 或者是一个Module :

或者用命令行的模式来启动Lint检测:

到项目的根目录中, 输入下面的命令, 回车

./gradlew lint

Gradle工具就会编译你的项目, 生成Lint测试的报告:

Lint检测结果

看到上图中说:

Wrote HTML report to file:///home/exe/qksms/QKSMS/build/outputs/lint-results-noAnalyticsDebug.html
Wrote XML report to file:///home/exe/qksms/QKSMS/build/outputs/lint-results-noAnalyticsDebug.xml

意思是:

  • HTML格式的报告已生成, 在/home/exe/qksms/QKSMS/build/outputs/lint-results-noAnalyticsDebug.html
  • XML格式的报告已生成, 在/home/exe/qksms/QKSMS/build/outputs/lint-results-noAnalyticsDebug.xml

Android Studio中配合Lint来检测缺失的permission


可以配置Lint检测permission的规则, 点击Android Studio的菜单栏中的File -> Settings, 在搜索框中输入lint, 再在子搜索框中输入permission, 然后可以勾选。

在Android Studio中运行Lint, 或者用上面说过的命令行。

在生成的报告中, 可以查看

Android -> Constant and Resource Type Mismatches

里面就会有Missing permission

总结


Lint是非常有用的一个代码监测工具, 可以审查很多种编程语言, 配合Android开发非常好用, 至于更多Lint的特性和使用, 请参考网上更多教程。


人世间,
万千情感皆有温度,
千万代码似有性格。
这里有原创教程,IT丛林......
和你一起探索程序人生。
我是谢恩铭,在巴黎奋斗的嵌入式软件工程师。
个人简介
热爱生活,喜欢游泳,略懂烹饪。
人生格言:“向着标杆直跑”