详解AndroidLint的原理及其使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

详解AndroidLint的原理及其使⽤
Android Lint 原理及使⽤详解
Android Lint 是 ADT 16中引⼊的新⼯具,⽤于扫描 Android 项⽬源中的潜在错误。

Lint 是 Android 提供的⼀个强⼤的,⽤于静态扫描应⽤源码并找出其中的潜在问题的实⽤⼯具。

lint ⼯具可以检查你的Android 项⽬源⽂件是否有潜在的错误,以及在正确性、安全性、性能、易⽤性、⽆障碍性和国际化⽅⾯是否需要优化改进。

Lint 既可以⽤作命令⾏⼯具,也可以与 Eclipse 和 IntelliJ 集成在⼀起。

它被设计成独⽴于 IDE 的⼯具,我们可以在 Android Studio 中⾮常⽅便的使⽤它。

Lint 的⼯作过程
lint ⼯具的代码扫描⼯作流:
应⽤源⽂件:源⽂件包含组成 Android 项⽬的⽂件,包括 Java、Kotlin 和 XML ⽂件、图标以及 ProGuard 配置⽂件。

lint.xml ⽂件:⼀个配置⽂件,可⽤于指定要排除的任何 lint 检查以及⾃定义问题严重级别。

lint ⼯具:⼀个静态代码扫描⼯具,你可以从命令⾏或在 Android Studio 中对 Android 项⽬运⾏该⼯具。

lint ⼯具检查可能会影响 Android 应⽤的质量和性能的代码结构问题。

强烈建议你先更正 lint 检测到的所有错误,然后再发布你的应⽤。

lint 检查结果:我们可以在控制台或 Android Studio 的 Inspection Results 窗⼝中查看 lint 检查结果。

Lint 的⼯作过程由 Lint Tool(检测⼯具),Source Files(项⽬源⽂件)和 lint.xml(配置⽂件)三个部分组成,Lint Tool 读取 Source Files,根据 lint.xml 配置的规则(issue)输出最终的结果。

Lint 的功能
Lint 可以检查并发现以下⼏类问题:
缺少翻译(和未使⽤的翻译)
布局性能问题(所有以前实⽤ layoutopt ⼯具⽤来查找的问题,等等)
数组⼤⼩不⼀致
可访问性和国际化问题(硬编码字符串,缺少 contentDescription 等)
图标问题(例如缺少密度,重复的图标,错误的尺⼨等)
可⽤性问题(如未在⽂本字段中指定输⼊类型)
Manifest 错误
问题等级
Lint 发现的每个问题都有描述信息和等级,我们可以很⽅便地定位问题,同时按照严重程度进⾏解决。

当然,我们也可以⼿动配置每个问题的严重级别。

Lint 本⾝包含⼤量已经封装好的接⼝,能提供丰富的代码信息,开发者可以基于这些信息进⾏⾃定义规则的编写。

Lint 会按照问题的严重程度分为⼏个等级:
Fatal
Error
Warning
Information
Ignore
问题严重程序由⾼到低依次降低。

从命令⾏运⾏ lint
如果你使⽤的是 Android Studio 或 Gradle,你可以在项⽬的根⽬录下输⼊以下某个命令,使⽤ Gradle 封装容器对项⽬调⽤lint 任务:
在 Windows 上:
gradlew lint
在 Linux 或 Mac 上:
./gradlew lint
lint ⼯具完成其检查后,会提供 XML 和 HTML 版 lint 报告的路径。

然后,我们可以转到 HTML 报告并在浏览器中将其打开
Android Studio 中使⽤ Lint
Lint 已经被集成到 Android Studio,所以可以直接使⽤,使⽤⾮常⽅便。

lint 的代码扫描⼯具,可帮助你发现并更正代码结构质量的问题,⽽⽆需您实际执⾏应⽤,也不必编写测试⽤例。

系统会报告该⼯具检测到的每个问题并提供问题的描述消息和严重级别,以便你可以快速确定需要优先进⾏的关键改进。

此外,你还可以降低问题的严重级别以忽略与项⽬⽆关的问题,或者提⾼严重级别以突出特定问题。

从菜单栏,选择Analyze > Inspect Code
选择检查范围
选择后,点击"OK",稍等⼀会就会⽣成扫描结果:
左侧是问题分类,选中⼀个问题条⽬,则右侧会展⽰具体的问题代码,这样就可以很⽅便的进⾏问题排查、定位和更改了。

Android 的规则类别:
Accessibility 辅助选项,例如 ImageView 缺少 contentDescription 描述,String 编码字符串等问题。

Compliance 合规性,违反了Google Play的要求,⽐如使⽤了过期的库版本,性能、安全性、API等级等没有遵循新系统的要求等。

Correctness 不够完美的编码,⽐如硬编码、使⽤过时API等。

Internationalization 国际化,如直接使⽤汉字,没有使⽤资源引⽤等。

Interoperability 互操作性,⽐如和Kotln的交互等。

Performance 性能,例如:静态引⽤,循环引⽤等。

Security 安全性,例如没有使⽤ HTTPS 连接 Gradle,AndroidManifest 中的权限问题等。

Usability 易⽤性,有更好的替换的,例如缺少某些倍数的切图,排版、图标格式建议.png格式等等。

lint 配置
配置 lint ⽂件
我们可以在 lint.xml ⽂件中进⾏ lint 配置。

我们可以⼿动创建该⽂件,并放置在 Android 项⽬的根⽬录下。

lint.xml ⽂件由封闭的⽗标记组成,此标记包含⼀个或多个⼦元素。

lint 会为每个定义唯⼀的 id 属性值。

<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- list of issues to configure -->
</lint>
我们可以通过在标记中设置严重性级别属性来更改某个问题的严重性级别或对该问题停⽤ lint 检查。

下⾯来看⼀个⽰例:
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Disable the given check in this project -->
<issue id="IconMissingDensityFolder" severity="ignore" />
<!-- Ignore the ObsoleteLayoutParam issue in the specified files -->
<issue id="ObsoleteLayoutParam">
<ignore path="res/layout/activation.xml" />
<ignore path="res/layout-xlarge/activation.xml" />
</issue>
<!-- Ignore the UselessLeaf issue in the specified file -->
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
</issue>
<!-- Change the severity of hardcoded strings to "error" -->
<issue id="HardcodedText" severity="error" />
</lint>
禁⽤某个⽂件或⽅法进⾏ lint 检查
如果我们在 Android 项⽬中想对某个类或⽅法禁⽤ lint 检查,可以请向该代码添加 @SuppressLint 注解。

以下⽰例展⽰了如何对 onCreate ⽅法中的 NewApi 问题停⽤ lint 检查。

lint ⼯具会继续检查该类的其他⽅法中的 NewApi 问题。

@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.main);
以下⽰例展⽰了如何对 FeedProvider 类中的 ParserError 问题停⽤ lint 检查:
@SuppressLint("ParserError")
public class FeedProvider extends ContentProvider {
要禁⽌ lint 检查⽂件中的所有问题,请使⽤ all 关键字,如下所⽰:
@SuppressLint("all")
xml ⽂件的 lint 检测配置
我们可以使⽤ tools:ignore 属性对 XML ⽂件的特定部分停⽤ lint 检查。

在 lint.xml ⽂件中添加以下命名空间值,以便 lint ⼯具能够识别该属性:
namespace xmlns:tools="/tools"
以下⽰例展⽰了如何对 XML 布局⽂件的元素中的 UnusedResources 问题停⽤ lint 检查。

如果某个⽗元素声明了 ignore 属性,则该元素的⼦元素会继承此属性。

在本⽰例中,也会对⼦元素停⽤ lint 检查。

<LinearLayout
xmlns:android="/apk/res/android"
xmlns:tools="/tools"
tools:ignore="UnusedResources" >
<TextView
android:text="@string/auto_update_prompt" />
</LinearLayout>
要禁⽌检查多个问题,请使⽤以英⽂逗号分隔的字符串列出要禁⽌检查的问题。

例如:
tools:ignore="NewApi,StringFormatInvalid"
要禁⽌ lint 检查 XML 元素中的所有问题,请使⽤ all 关键字,如下所⽰:
tools:ignore="all"
通过 Gradle 配置 lint 选项
通过 Android Plugin for Gradle,我们可以使⽤模块级 build.gradle ⽂件中的 lintOptions {} 代码块配置某些 lint 选项,例如要运⾏或忽略哪些检查。

例如:
android {
...
lintOptions {
// Turns off checks for the issue IDs you specify.
disable 'TypographyFractions','TypographyQuotes'
// Turns on checks for the issue IDs you specify. These checks are in
// addition to the default lint checks.
enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
// To enable checks for only a subset of issue IDs and ignore all others,
// list the issue IDs with the 'check' property instead. This property overrides
// any issue IDs you enable or disable using the properties above.
check 'NewApi', 'InlinedApi'
// If set to true, turns off analysis progress reporting by lint.
quiet true
// if set to true (default), stops the build if errors are found.
abortOnError false
// if true, only report errors.
ignoreWarnings true
}
}
...
在 Android Studio 中修改 lint 配置⽂件
我们可以很⽅便的在 Android Studio 中修改 lint 检查时的配置。

Android Studio 附带了许多 lint 及其他检查配置⽂件,这些配置⽂件可通过 Android 更新进⾏更新。

我们可以原封不动地使⽤这些配置⽂件,也可以修改它们的名称、说明、严重级别和范围。

当然,还可以激活和禁⽤整组的配置⽂件或⼀组配置⽂件中的个别配置⽂件。

依次选择 Analyze > Inspect Code,在 Specify Scope 对话框的 Inspection Profile 下,点击 More。

此时将显⽰ Inspections 对话框,其中列出了⽀持的检查及其说明:
1. 选择 Profile 下拉列表,以在 Default (Android Studio) 与 Project Default(活动项⽬)检查之间切换。

2. 在左侧窗格的 Inspections 对话框中,选择⼀个顶级配置⽂件类别,或展开⼀个组并选择特定的配置⽂件。

选择⼀个配
置⽂件类别后,我们可以将该类别中的所有检查项⽬当作⼀个检查项⽬进⾏修改。

3. 选择 Manage 下拉列表,以复制检查项⽬、对检查项⽬进⾏重命名、向检查项⽬添加说明以及导出/导⼊检查项⽬。

4. 操作完成后,点击 OK。

以上就是详解Android Lint的原理及其使⽤的详细内容,更多关于Android Lint的原理的资料请关注其它相关⽂章!。

相关文档
最新文档