Android Lint是很好的检查工具,可以帮助开发者检查很多问题,其中检查android项目重复的资源文件非常有用。

1、命令行下使用

Android Lint有很多命令,具体可以在网上查到。今天主要使用check,这个命令目的是只进行某个或某几个类型的检查,比如只检查无用的资源“lint --check UnusedResources <project dir>”。至于都有哪些类型的检查,可以输入命令"lint --list"来查看,也可以输入命令"lint --show"来查看详细介绍。我们也可以把结果保存成文件,以便我们来查看,下面是一条简单的例子:

lint --simplehtml <savefile> --check UnusedResources <project dir>

这样就可以检查某个工程下的重复资源,并将结果保存成html文件方便查看(文件路径不需要加引号)。

2、idea下使用

eclipse下有lint的插件,而且网上相关介绍非常多,但是idea的相关文档就比较少。idea中已经支持android lint,如何使用呢?

在项目中点击右键,在出现的右键菜单中有“Analyze” --> “run inspaction by Name ...”。在弹出的搜索窗口中输入想执行的检查类型,如“Unused Resources”。不必全部输入就应该自动找到了,点击后会弹出“inspaction scope”选择窗口,选择检查的范围,一般选择整个项目或模块。“inspaction scope”窗口下面还可以设置文件过滤,选择好后点ok就开始检查了。然后就可以根据检查结果来去除重复的资源。

3、idea项目检查不全问题。

对idea的android项目检查是发现问题,不论是使用命令行还是idea自带插件来检查重复资源,根据结果可以发现检查的并不全面,没有检查图片资源。但是网上一些文档却很明确lint能检查图片资源,那么问题出在哪里?

其实就是idea的android项目结构的问题,idea创建的android项目built后会发现R.java等临时文件里面其实是空的,而对图片资源检查就需要基于R.java这个文件来检查。那么idea项目的真正的R.java文件在哪里?

它的位置是“C:\Users\<username>\.IntelliJIdea13\system\compile-server\<projectname_*****>\targets\java-production\<projectname>\android\generated_sources\aapt\<packagename>\R.java”。

自己简单研究了一下,找出了一个比较笨拙的解决方法。对命令行和idea,具体解决方法有些不同:

(1)命令行下。在项目下手的建立gen文件夹,在其下建立包名对应的文件夹,然后将R.java复制到下面。然后再使用lint来进行检查就可以了。因为android默认的文件结构R.java文件是在gen下的,所以lint会去这个文件夹下找R.java文件。

(2)idea下。与命令行的方法类似,不过根据创建的项目类型的不同,R.java存在的文件夹也不同。比如maven项目会在“target\generated-sources\r”下(想知道本项目的R.java文件位置,可以在项目右键菜单“open modules setting” --> "modules"中,选择对应的模块下的"Android",在右边窗口中选择“Generated Sources”选项卡,下面可以看到对应的设置,也可以对其进行修改。)。将R.java复制到对应的文件夹下替换空的R.java文件,然后在使用idea的lint来检查就会检查图片资源了。

(3)idea maven下。用idea对android项目编译,项目目录下R.java是空的。但是用maven来编译,会在目录下生成完整的R.java文件,就可以直接lint了。如何maven编译呢?首先项目是maven项目,然后在工具栏的运行选项那里选择“edit configurations”。在弹出的“run/debug configurations”窗口中点击“+”添加一个maven项,在右栏中定义名字,然后在"command line"中填入“clean compile”。这样就添加了一个运行选项,然后选择新添的去run,就可以用maven来编译项目了,这样就会生成完整的R.java文件

小小总结一下,之所以idea项目会出现问题,究其原因还是idea没有将R.java等临时文件放在项目目录下,这也是idea的一个特色。上面的解决方法也比较笨拙,不知道是否还有更有效便捷的方法,如果有人知道希望可以指点一下。而且还有一个文件,就是styles.xml文件中重复的部分仍然无法检测出来,有人知道是什么问题么?

Android Lint 去除重复资源 之 idea探究相关推荐

  1. android 混淆和去除无用资源

    1 android studio 清除无用资源文件 buildTypes {         release {             minifyEnabled true              ...

  2. android Lint优化代码

    今天,简单的讲讲  android Lint优化代码. 作为移动应用开发者,我们总希望发布的apk文件越小越好,不希望资源文件没有用到的图片资源也被打包进apk,不希望应用中使用了高于minSdk ...

  3. Android Lint 实践 —— 简介及常见问题分析

    概况 QMUI Android 刚更新了 1.0.4 版本,其中主要的特性是引入了 Android Lint,对项目代码进行优化.Android Lint 是 SDK Tools 16(ADT 16) ...

  4. 入门 Android Lint

    Lint ​ Android Lint 是Android Studio 在ADT(Android Developer Tools)16提供的代码扫描工具,可以帮助我们发现和更正代码结构质量的问题.系统 ...

  5. android官方技术文档翻译——Android Lint

    本文译自androd官方技术文档<Android Lint>,原文地址:http://tools.android.com/tips/lint. 本文地址:http://blog.csdn. ...

  6. 通关Android Lint

    Lint ​ Android Lint 是Android Studio 在ADT(Android Developer Tools)16提供的代码扫描工具,可以帮助我们发现和更正代码结构质量的问题.系统 ...

  7. Android Lint 原理及使用详解

    Android Lint 原理及使用详解 Android Lint 是 ADT 16中引入的新工具,用于扫描 Android 项目源中的潜在错误. Lint 是 Android 提供的一个强大的,用于 ...

  8. Android lint检查

    一.什么是Android lint 检查 Android lint是一个静态代码分析工具,能够对项目中潜在的bug,可优化的代码,安全性,性能,可行性,可访问性,国际化等检查. 二.lint工作流程 ...

  9. android studio类重复,Android Studio 解决重复依赖

    随着引入越来越多的 三方库,不可避免的 会遇到 编译失败,提示重复依赖的问题 下面简单快速的 记录一下处理方案: 1 . 配置 gradle 环境变量 第一步 找到本机的 gradle 路径 的 bi ...

最新文章

  1. 利用github-pages建立个人博客
  2. 浏览器 刷新页面后回到顶部_JavaScript仿知乎回到顶部功能
  3. struts2的漏洞
  4. exls导入数据库 php_PHP 利用 PHPexcel 导入数据库
  5. 资源放送丨《MySQL在某航空业公司的架构选型演进之路》PPT视频
  6. 两个特征是独立好还是正相关好_stata速学|相关分析|主成分分析|因子分析
  7. php header apk,php常用的header头
  8. 屏蔽掉Accordion控件的键盘事件.
  9. android连接指定的wifi
  10. Report machine 单据报表设计
  11. [CTO札记]李彦宏:《领导者的心态——Best of the best》
  12. matlab的梯形公式推导公式,复化梯形公式,辛普森公式的matlab程序
  13. 从程序员到项目经理(2)
  14. 爬取飞猪IP免费代理练习
  15. RGB颜色与十六进制颜色码
  16. 2021年Flash被禁用后继续使用的方法
  17. 《Python》re模块补充、异常处理
  18. 怎么用python表白_如何正确使用Python进行表白
  19. 雨林木风 linux操作系统,“雨林木风”操作系统门户正式上线
  20. SAP 中Table的使用(一、显示数据)

热门文章

  1. linux 下 读取某个文件的某一行或者某几行
  2. Android开发之基本概念
  3. effective C++ 读书笔记(0-2)
  4. 用bde连接 连接sql server2005
  5. asp.net下向数据库存储和读取图片示例
  6. 《C#图解教程》读书笔记之六:接口和转换
  7. man da'te
  8. 如何通过shell脚本操作MongoDB
  9. [R]RMySQL set up
  10. UICollectionView的sectionHeader悬浮效果