除了测试您的安卓应用程序是否符合它的功能要求外,重要的是要确保您的代码没有任何结构上的问题。结构差的代码会影响你的安卓应用程序的可靠性和效率,并使你的代码更难维护。例如,如果您的XML资源文件包含未使用的命名空间,这占用空间,并会导致不必要的处理。其他结构性问题,如使用过时的元素或不受目标API版本支持的API调用,可能会导致代码无法正确运行。
Android Studio提供了一个代码扫描工具称为“Lint”,可以帮助您轻松地识别和正确的问题与您的代码的结构质量,而不必执行应用程序或写任何测试用例。工具所检测到的每个问题都有一个描述消息和一个严重程度的报告,这样你就可以快速地优先考虑需要作出的关键性的改进。您还可以配置一个问题的严重程度,忽略不相关的项目,或提高严重程度级别的问题。该工具具有一个命令行接口,所以您可以很容易地将其集成到您的自动化测试过程中。
该工具检查您的安卓项目源文件的潜在的错误和优化的正确性,安全性,性能,可用性,可访问性和国际化的改进。
您可以从Android Studio中运行命令行来执行Lint。
注:在Android Studio,额外的IntelliJ代码检查时运行你的代码被编译Android Studio简化代码审查。
Application source files
源文件包含创建你的Android项目的文件,包括java和xml文件,图标和混淆器配置文件。
The lint.xml file
一个可以用来指定要排除的任何不确定的检查,并自定义问题严重程度级别的配置文件。
The Lint tool
你可以在你的安卓项目中的命令窗口使用命令行或在Android Studio中使用这个静态代码扫描工具。该工具检查可能会影响您的安卓应用程序的质量和性能的结构代码问题。强烈建议您在发布应用程序之前纠正任何错误。
Results of Lint checking
您可以查看控制台或事件日志中的控制台中的结果或事件日志中的结果。每个问题都是由它发生的源文件中的位置确定的,并对该问题的描述。
Lint工具自动安装作为Android SDK工具的版本16或更高的版本的一部分。
在Android Studio中,当你构建你的应用时,配置的Lint和IDE检查自动运行。IDE检查配置随着Lint检查运行IntelliJ代码检查精简代码审查。
注意:要查看和修改检查严重级别,请使用File > Settings > Editor > Inspections菜单以打开支持检查的列表的检查配置页。
与Android的工作室,你也可以运行一个特定的Lint检查构建变体,或建立所有build.gradle文件设置的变种。在Android设置的build文件中增加lintOptions属性。这段代码从Gradle构建文件显示了如何设置quiet选项为true,和abortonerror选项为false。
android {
lintOptions {
// set to true to turn off analysis progress reporting by lint
quiet true
// if true, stop the gradle build if errors are found
abortOnError false
// if true, only report errors
ignoreWarnings true
}
...
}
要在Android Studio手动运行检查,从应用程序或右键菜单选择Analyze > Inspect Code。出现检查范围对话框,以便您可以指定所需的检查范围和配置文件。
每个检查的结果显示在检查工具窗口中。您可以看到一个问题概要关联到一个检查错误处,通过选择来显示错误的完整的问题的解释。
在工程目录下运行Lint检查一系列的文件:
lint [flags] <project directory>
例如,您可以发出以下命令来扫描文件目录及其子目录下的文件。这个发布的id missingprefix告诉Lint只扫描没有Android命名空间前缀的XML属性。
lint --check MissingPrefix myproject
要查看工具所支持的所有标志和命令行参数的完整列表:
lint --help
下面的示例显示了当命令运行在一个名为“Earthquake”的项目时,控制台输出的内容。
$ lint Earthquake
Scanning Earthquake: ...............................................................................................................................
Scanning Earthquake (Phase 2): .......
AndroidManifest.xml:23: Warning: <uses-sdk> tag appears after <application> tag [ManifestOrder]
^
AndroidManifest.xml:23: Warning: tag should specify a target API level (the highest verified version; when running on later versions, compatibility behaviors may be enabled) with android:targetSdkVersion="?" [UsesMinSdkAttributes]
^
res/layout/preferences.xml: Warning: The resource R.layout.preferences appears to be unused [UnusedResources]
res: Warning: Missing density variation folders in res: drawable-xhdpi [IconMissingDensityFolder]
0 errors, 4 warnings
在这个项目中,上面的输出列出了四个警告,并且没有错误。三个警告(manifestorder,usesminsdkattributes,和unusedresources)是该项目的AndroidManifest.xml文件中找到的。其余的警告(iconmissingdensityfolder)在preferences.xml布局文件中找到。
在默认情况下,当您运行Lint进行扫描时,可以通过Lint工具检查出所有的问题。您还可以限制一些问题不使用Lint检查以及分配其严重程度。例如,您可以禁用不相关的特定问题,不与您的项目和配置不相关的检查,报告非关键问题在较低的严重程度级别。
您可以配置不同级别的检查:
• Globally, for the entire project
• Per project module
• Per production module
• Per test module
• Per open files
• Per class hierarchy
• Per Version Control System (VCS) scopes
当你使用Android Studio内置的Lint工具检查你的代码。你可以通过两种方式来看警告和错误:
设置默认的检查:
1.在Android Studio中,打开你的工程。
2.选择File > Other Settings > Default Settings。
3.在默认熟悉对话框中,选择Editor > Inspections。
4.在配置文件中,选择默认或项目默认来设置分别为Android或这个项目进行设置。
5.展开一个类别,并根据需要更改所需的设置。您可以选择单独的检查,或整个类别。
6.点击OK。
在检查结果窗口中显示了一系列的Lint检查的结果:
1.在Android Studio中打开你的项目工程兵选择一个你想测试的工程项目。
2.选择Analyze > Inspect Code。
3.在指定检查范围的对话框中,选择检查范围和配置。围指定要分析的文件,而配置文件指定要执行的文件的检查。
4.如果你想改变Lint的设置,点击…检查对话框,以单击Manage来定义一个新的配置文件,指定您想要的Lint设置,然后单击OK。
5.点击OK。
结果按类别组织显示在“检查结果”窗口中。
你可以在lint.xml文件中特别指定Lint要检查的属性偏好。如果您正在手动创建此文件,请将其放置在您的安卓项目的根目录中。如果你在Android Studio中配置Lint偏好, 这个lint.xml文件会自动创建并添加到你的Android项目中。
这个lint.xml文件包含一个封闭的根标签,根标签下包含一个或者多个子元素。每个都是由一个唯一的标识属性值通过lint标识的。
<lint>
lint>
通过在标签中设置严重性属性值,您可以禁用问题的检查或更改某个问题的严重级别级别。
提示:要查看由所支持的“工具”和它们的相应的问题标识的问题的完整列表,运行lint –list命令。
一个lint.xml文件的例子
下面的示例演示了一个lint.xml文件的内容
<lint>
<issue id="IconMissingDensityFolder" severity="ignore" />
<issue id="ObsoleteLayoutParam">
<ignore path="res/layout/activation.xml" />
<ignore path="res/layout-xlarge/activation.xml" />
issue>
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
issue>
<issue id="HardcodedText" severity="error" />
lint>
您可以从你的java和XML源文件中禁用Lint检查。
提示:如果你使用的是Android Studio,你可以使用File > Settings > Project Settings > Inspections特征管理Lint检查您的java和XML源文件。
在Android Studio中专门为java类或方法添加了@ suppresslint注释的java代码禁用Lint检查。
下面的示例演示在onCreate方法上利用NewApi如何关闭的Lint检查的。Lint工具继续检查其他这类问题的方法NewApi。
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
下面的示例显示在FeedProvider类上存在ParserError的问题上如何关闭Lint检验:
@SuppressLint("ParserError")
public class FeedProvider extends ContentProvider {
在java文件中使用“all”关键词抑制检查的所有Lint问题,如下:
@SuppressLint("all")
您可以使用tools:ignore 属性来禁用XML文件的特定部分的线头检查。为了要为Lint工具识别这个属性,下面的命名空间值必须包含在您的XML文件中:
namespace xmlns:tools="http://schemas.android.com/tools"
下面的示例演示在XML布局文件标签如何关闭Lint检查的UnusedResources问题。忽略属性是由声明属性的父元素的子元素继承的。在这个例子中,Lint检查在子类< TextView >元素上失效。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="UnusedResources" >
<TextView
android:text="@string/auto_update_prompt" />
LinearLayout>
要禁用更多的问题,列出在逗号分隔的字符串中禁用的问题。例如:
tools:ignore="NewApi,StringFormatInvalid"
要抑制XML元素中所有线头问题的检查,使用all关键字,例如:
tools:ignore="all"