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

近来有一个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.htmlWrote 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丛林......
和你一起探索程序人生。
我是谢恩铭,在巴黎奋斗的嵌入式软件工程师。
个人简介
热爱生活,喜欢游泳,略懂烹饪。
人生格言:“向着标杆直跑”

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 一款常用的 Squid 日志分析工具
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. 使用 Android(安卓)Studio 进行自动化脚本编译项目工程
  5. Python入门(一)——环境的搭建,创建第一个Python项目:Hello World
  6. Android(安卓)培训计划:如何从功能机时代的 C/C++ 工程师转型至 A
  7. 使用Tortoise SVN版本控制Android项目in eclipse的注意事项
  8. 整合Plugin-X之后的ios项目配置
  9. 【项目】Android(安卓)预置第三方应用可卸载功能的实现

随机推荐

  1. Android使用OKHttp访问网络获取Cookie和
  2. 本来想用“{{”秀一波,结果却导致了内存溢
  3. What do GC_FOR_MALLOC, GC_EXPLICIT, an
  4. Cobub Razor移动应用分析系统
  5. A​n​d​r​o​i​d​ ​B​l​u​e​t
  6. Android修改系统闹铃的持续时间
  7. android重力感应开发之微信摇一摇功能
  8. Android中写与Wifi相关程序的注意事项—
  9. 右下脚图标
  10. android.content.res.Resources$NotFound