使用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.
这里写图片描述
这是我们项目中没用的资源文件,好多没用的图片啊!!
删掉之后清爽好多!

Tools 命名空间的使用与 Support Library Annotations 介绍

原文出处:杨辉的个人博客  Tools 命名空间 tools 命名空间是在 Android Studio 中引入的 编辑预览特性,可以生成一些只在 IDE 预览界面生效的特性。 属性...
  • zhangfei2018
  • zhangfei2018
  • 2015年09月01日 14:06
  • 790

Android ListView 多种布局--初步

提出问题先看下面这个ListView该如何实现上面这个需求?解决问题我们知道ListView数据绑定类BaseAdapter有个getItemViewType,这个方法完全满足上面的要求,下面写个简单...
  • Linux1s1s
  • Linux1s1s
  • 2015年06月29日 23:15
  • 958

使用lint工具优化Android代码

Android lint 工具优化代码,给apk瘦身
  • hlglinglong
  • hlglinglong
  • 2015年05月11日 21:22
  • 4214

Android代码优化——使用Android lint工具(才发现这是个不错的工具)

来源:Linux社区  作者:xyz_lmn 在这个网址看到的:http://www.linuxidc.com/Linux/2014-02/97023.htm 作为移动应用开发者,...
  • abc452517
  • abc452517
  • 2016年03月15日 10:03
  • 609

Android Studio使用Lint进行代码检查

Android Studio目前已经更新到1.4版本,它作为Google官方推荐的IDE,功能非常强大,其中提供了一套静态代码分析工具,它可以帮助我们检查项目中存在的问题,让我们更有规范性的开发App...
  • u010687392
  • u010687392
  • 2015年08月21日 15:50
  • 12577

Tools 命名空间的使用与 Support Library Annotations 介绍

tools 命名空间是在 Android Studio 中引入的 编辑预览特性,设置只在 IDE 预览界面生效的属性。可以方便地对照设计稿调 UI 而避免将预览属性编译进 apk 中(是否会编译进...
  • axuanqq
  • axuanqq
  • 2015年12月09日 18:08
  • 528

AndroidStudio使用教程(第七弹)

AndroidStudio使用教程(第七弹)本文讲解一下Gradle的应用,大家都知道Gradle使用起来非常方便,那他究竟方便在哪里?                           很多时候我...
  • Charon_Chui
  • Charon_Chui
  • 2016年01月08日 20:35
  • 1084

Android Lint官方静态代码检查工具

一、简介 Android SDK自带了工具Lint,通过它可以对Android工程源码进行静态代码分析,发现潜在的缺陷和优化改进项。Android Lint可以在以下几个层面分析代码:corre...
  • imxiangzi
  • imxiangzi
  • 2016年05月15日 21:28
  • 1002

[Android]使用 lint 工具优化 Android 布局

转载自:Android代码优化——使用Android lint工具 作为移动应用开发者,我们总希望发布的apk文件越小越好,不希望资源文件没有用到的图片资源也被打包进apk,不希望应用中使用了高于mi...
  • haonanren2bu2
  • haonanren2bu2
  • 2015年08月20日 13:36
  • 394

Android官方技术文档翻译——Gradle 插件用户指南(5)

本文译自Android官方技术文档《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system...
  • maosidiaoxian
  • maosidiaoxian
  • 2014年12月19日 08:55
  • 4815
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用lint工具优化Android代码
举报原因:
原因补充:

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