使用lint工具优化Android代码

原创 2015年05月11日 21:22:46

一、概述

Android lint工具是一个静态的代码分析工具,用来检查代码中潜在的问题并且提高代码的正确性,安全性,可用性,国际化和性能。
确保代码中没有结构性的错误,发现潜在的问题。Android-Lint提供了命令行方式执行,还可与IDE(eclipse、Idea、AndroidStudio)集成,并提供了html形式的输出报告。Android-Lint可以方便的与项目中的其他自动系统(配置/ Build / 测试等)集成。

二、应用

2.1 自动执行

以AndroidStudio为例,当build应用时,lint就会再自动运行。并且如果报错的话就会停止build。我们可以在项目的gradle配置文件中配置lint选项

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
       }
       ...
    }

上面的代码代表静默执行,并且忽略lint报错。

2.2手动执行

当然,我们还可以手动执行lint ,操作Analyze > Inspect Code。

2.3代码行执行

lint提供了命令行执行,不知道怎么执行的话可以 lint –help下。
Android-Lint所检查的潜在问题,可以通过命令行$lint –show来获得。可以参考这里:

http://tools.android.com/tips/lint

检查大概的格式是这样的:

lint [flags] <project directory>

最简单的一种用法:

lint Android项目目录

例子:

lint app/                                                                                                                                             

Scanning 1.0.1: .....
Scanning 1.0.1 (Phase 2): ..
Scanning umengupdate-release: ......................................
Scanning unspecified: ...............................................
Scanning unspecified (Phase 2): ....................
build/intermediates/exploded-aar/umengupdate-release/res/layout/umeng_update_dialog.xml:47: Warning: Consider adding android:layout_marginEnd="8dp" to better support right-to-left layouts [RtlHardcoded]
                android:layout_marginRight="8dp"
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build/intermediates/exploded-aar/com.afollestad/material-dialogs/0.7.3.1/AndroidManifest.xml: Warning: The project references RTL attributes, but does not explicitly enable or disable RTL support with android:supportsRtl in the manifest [RtlEnabled]
26 errors, 444 warnings

如下的命令可以检测在xml文件中没有命名前缀的错误:

lint --check MissingPrefix myproject

具体的命令请参考官网

http://developer.android.com/tools/help/lint.html

三、lint配置

3.1在设置中配置

在AndroidStudio中,我们可以在 File > Settings > Project Settings中配置lint在我们项目中得配置。
这里写图片描述

3.2 lint.xml

引用官方文档中的一张图:
这里写图片描述
很直观的表达了lint.xml文件的作用,通过lint.xml和lint Tool共同作用就可以检查代码中的问题。
一个例子:

<?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>

3.3在Java代码和XML代码中配置lint

当然在Java代码中依然可以配置lint,例子:

@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

上面的代码代表在onCreate方法中关闭lint检查”NewApi”,但是lint依然会检查没有 @SuppressLint(“NewApi”) 标记的其他方法。
类似的还有:

@SuppressLint("ParserError")
public class FeedProvider extends ContentProvider {

关闭”ParserError”检查。
如果想关闭搜索的检查项,可以这样设置:

@SuppressLint("all")

在XML中,我们可以使用tools:ignore 来关闭相应lint检查项,要使用”tools:”,首先要加上相应地namespaces

namespace xmlns:tools="http://schemas.android.com/tools"

例子如下:

<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"

相应地关闭所有的检查项:

tools:ignore="all"

四、总结

lint工具对于个人开发者个人感觉用处相对不大,但是如果是团队项目,那么它的作用就很大了,因为每个人的代码习惯都是不一样的,并且会定义很多的资源文件,这样日积月累下来,apk的大小就会不必要的增大很多。个人感觉lint工具最重要的一个功能就是差unUseResources,可以删掉好多不用的资源文件,给apk瘦身。
检查结果在 Android Lint –> Unused resources.
这里写图片描述
这是我们项目中没用的资源文件,好多没用的图片啊!!
删掉之后清爽好多!

使用lint工具优化Android代码

一、概述 Android lint工具是一个静态的代码分析工具,用来检查代码中潜在的问题并且提高代码的正确性,安全性,可用性,国际化和性能。确保代码中没有结构性的错误,发现潜在的问题。Andro...

Android代码优化——使用Android lint工具

作为移动应用开发者,我们总希望发布的apk文件越小越好,不希望资源文件没有用到的图片资源也被打包进apk,不希望应用中使用了高于minSdk的api,也不希望AndroidManifest文件存在异常...
  • xyz_lmn
  • xyz_lmn
  • 2013年12月27日 11:21
  • 49857

Android ListView 多种布局--初步

提出问题先看下面这个ListView该如何实现上面这个需求?解决问题我们知道ListView数据绑定类BaseAdapter有个getItemViewType,这个方法完全满足上面的要求,下面写个简单...

Gradle常用命令操作及配置说明

Gradle强大的编译能力和构建能力足以胜任日常中的开发,很多人将其视为maven的替代方案,至于用maven还是用Gradle这个根据各人喜爱或团队要求来决定。 Gradle快速查看指南 官网提供:...
  • boonya
  • boonya
  • 2016年07月27日 18:01
  • 4186

Gradle 教程说明 用户指南 第11章 使用 Gradle 命令行

11.1 执行多个任务 每个任务都只执行一次,不管它如何被包含在build:无论是在命令行中指定,或作为一个依赖的另一个任务,或两者兼而有之。 以下四个任务的定义。dist和测试都依赖于 ...

代码优化------Android studio中关于lint工具的使用

毋庸置疑此工具简直就是一把利器,帮我们分析在我们编码中存在的诸多问题,我们不可能什么问题都能发现的了,so称之为利器,用之事半功倍. 其有很多的功能,今天就从两方面着手,第一是如何应用,第二是一个类文...

Android代码优化——使用Android lint工具

作为移动应用开发者,我们总希望发布的apk文件越小越好,不希望资源文件没有用到的图片资源也被打包进apk,不希望应用中使用了高于minSdk的api,也不希望AndroidManifest文件存在异常...

Android代码优化——使用Android lint工具

作为移动应用开发者,我们总希望发布的apk文件越小越好,不希望资源文件没有用到的图片资源也被打包进apk,不希望应用中使用了高于minSdk的api,也不希望AndroidManifest文件存在异常...

Android代码优化——使用Android lint工具

作为移动应用开发者,我们总希望发布的apk文件越小越好,不希望资源文件没有用到的图片资源也被打包进apk,不希望应用中使用了高于minSdk的api,也不希望AndroidManifest文件存在异常...

Android代码优化——使用Android lint工具

作为移动应用开发者,我们总希望发布的apk文件越小越好,不希望资源文件没有用到的图片资源也被打包进apk,不希望应用中使用了高于minSdk的api,也不希望AndroidManifest文件存在异常...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用lint工具优化Android代码
举报原因:
原因补充:

(最多只允许输入30个字)