大兴安岭做网站,河北网页设计,和县网站设计,wordpress andriod关于作者#xff1a;CSDN内容合伙人、技术专家#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 #xff0c;擅长java后端、移动开发、商业变现、人工智能等#xff0c;希望大家多多支持。 目录 一、导读二、概览三、将 lint 配置为不显示警告3.1 在 A… 关于作者CSDN内容合伙人、技术专家 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 擅长java后端、移动开发、商业变现、人工智能等希望大家多多支持。 目录 一、导读二、概览三、将 lint 配置为不显示警告3.1 在 Android Studio 项目 中配置 lint3.2 配置 Java、Kotlin 和 XML 源文件的 lint 检查3.3 配置 Java 或 Kotlin 的 lint 检查3.4 配置 XML 的 lint 检查3.5 通过 Gradle 配置 lint 选项 四、Android studio 运行lint检查4.1 去掉无用资源4.2 去掉 无用的import4.3 去掉无用声明4.4 去掉无用赋值4.5 去掉xml中未使用的命名空间声明或位置提示4.6 去掉无用依赖库 五、从命令行运行 lint五、 推荐阅读 一、导读
我们继续总结学习** lint 基础知识**温故知新。
二、概览
Android Studio 提供了一个名为 lint 的代码扫描工具可帮助您发现并更正代码结构质量方面的问题而无需您实际执行应用 也不必编写测试用例。系统会报告该工具检测到的每个问题并提供问题的描述消息和严重级别以便您可以快速确定需要优先进行的关键改进。 此外您还可以降低问题的严重级别以忽略与项目无关的问题或者提高严重级别以突出特定问题。
lint 工具可以检查您的 Android 项目源文件是否有潜在的 bug以及在正确性、安全性、性能、易用性、无障碍性和国际化方面是否需要优化改进。
lint 官网
三、将 lint 配置为不显示警告
默认情况下当您运行 lint 扫描时凡是 lint 可帮助检查的问题lint 工具都会检查是否存在。 您也可以限定让 lint 只检查是否存在某些问题并为这些问题指定严重级别。例如您可以禁止 lint 检查是否存在与项目无关的特定问题 还可以将 lint 配置为以较低的严重级别报告非关键问题。
您可以配置不同级别的 lint 检查
全局整个项目
项目模块
生产模块
测试模块
打开的文件
类层次结构
版本控制系统 (VCS) 范围3.1 在 Android Studio 项目 中配置 lint
可以在 lint.xml 文件中指定 lint 检查偏好设置在项目的根目录下创建此文件 通过在 标记中设置严重级别属性来更改某个问题的严重级别或禁止对该问题进行 lint 检查。
?xml version1.0 encodingutf-8 ?
lint!--配置所有Issue的默认优先级--!--issue idall severitywarning/--!--配置指定Issue的优先级--!--issue idShowToast severityerror/--!--忽略指定路径的指定问题支持正则表达式或path匹配--!--issue idNewApi--!--ignore regexp.*MainActivity.java/--!--ignore path**/com/paincker/lint/demo/MainActivity.java/--!--ignore pathres/layout/activation.xml/--!--/issue--!--issue idall severitywarning/--!-- 忽略android建议的最小尺寸建议提示 --issue idSmallSp severityignore/!-- 忽略 ButtonStyle--issue idButtonStyle severityignore/!-- 忽略拼写问题--issue idSpellCheckingInspection severityignore/issue idSpelling severityignore/!-- 忽略对控件内容描述的检查 --issue idContentDescription severityignore/issue idSameParameterValue severityignore/issue idUsingHttp severityignore ignore pathdemo/gradle/wrapper/gradle-wrapper.properties //issue!-- 忽略google提供的云端备份功能 --issue idAllowBackup severityignore/issue idRtlEnabled severityignore /!-- 忽略Missing density variation folders in src/main/res: drawable-hdpi, drawable-mdpi, drawable-xxhdpi --issue idIconMissingDensityFolder severityignore/issue idGradleDependency severityignore /
/lint3.2 配置 Java、Kotlin 和 XML 源文件的 lint 检查
settings Editor Inspections
Accessibility 辅助选项比如ImageView的contentDescription往往建议在属性中定义等。Compliance 合规性违反了Google Play的要求比如使用了过期的库版本性能、安全性、API等级等没有遵循新系统的要求等。Correctness 不够完美的编码比如硬编码、使用过时API等。Internationalization 国际化直接使用汉字没有使用资源引用等Interoperability 互操作性比如和Kotln的交互等。Performanc 对性能有影响的编码比如静态引用循环引用等Security 不安全的编码比如在 WebView 中允许使用 JavaScriptInterface等Usability 可用的有更好的替换的 比如排版、图标格式建议.png格式等
3.3 配置 Java 或 Kotlin 的 lint 检查
要专门对 Android 项目中的某个类或方法停用 lint 检查请向该代码添加 SuppressLint 注解。
以下示例展示了如何对 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 {要禁止 lint 检查文件中的所有问题请使用 all 关键字如下所示
SuppressLint(all)3.4 配置 XML 的 lint 检查
以使用 tools:ignore 属性对 XML 文件的特定部分停用 lint 检查。在 lint.xml 文件中添加以下命名空间值以便 lint 工具能够识别该属性
namespace xmlns:toolshttp://schemas.android.com/tools以下示例展示了如何对 XML 布局文件的 元素中的 UnusedResources 问题停用 lint 检查。如果某个父元素声明了 ignore 属性则该元素的子元素会继承此属性。在本示例中也会对 子元素停用 lint 检查。
LinearLayoutxmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolstools:ignoreUnusedResources TextViewandroid:textstring/auto_update_prompt /
/LinearLayout要禁止检查多个问题请使用以英文逗号分隔的字符串列出要禁止检查的问题。例如
tools:ignoreNewApi,StringFormatInvalid要禁止 lint 检查 XML 元素中的所有问题请使用 all 关键字如下所示 tools:ignoreall3.5 通过 Gradle 配置 lint 选项
通过 Android Plugin for Gradle您可以使用模块级 build.gradle 文件中的 lint{} 代码块配置某些 lint 选项例如要运行或忽略哪些检查。以下代码段展示了您可以配置的部分属性
android {...lint {// 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.checkOnly 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// If true, lint also checks all dependencies as part of its analysis. Recommended for// projects consisting of an app with library dependencies.checkDependencies true}
}
...四、Android studio 运行lint检查
通过依次选择 code Inspect Code手动运行配置的 lint 及其他 IDE 检查。检查结果将显示在 Inspection Results 窗口中 结果。
点击 OK 以运行检查。下图 显示了通过运行 Inspect Code 所生成的 lint 及其他 IDE 检查结果
下面我们列出一些常用的单独的选项
4.1 去掉无用资源
通过依次选择 code Analyze Code Run Inspection By Name
然后在对话框中输入 unused resources 点击ok
4.2 去掉 无用的import
通过依次选择 code Analyze Code Run Inspection By Name 然后在对话框中输入 unused import 点击ok
4.3 去掉无用声明
方式同上 然后在对话框中输入 unused declaration
4.4 去掉无用赋值
方式同上 然后在对话框中输入 unused assignment
4.5 去掉xml中未使用的命名空间声明或位置提示
方式同上 然后在对话框中输入 unused schema declaration
4.6 去掉无用依赖库
方式同上 然后在对话框中输入 unused library
constant conditional expression
更多选项请在 配置 Java、Kotlin 和 XML 源文件的 lint 检查 中查看。
五、从命令行运行 lint
如果您当前未使用 Android Studio 或 Gradle您可以在通过 SDK 管理器安装 Android SDK 命令行工具后使用独立 lint 工具。 安装该组件后您可以在 android_sdk/cmdline-tools/version/bin/lint 中找到 lint 工具。
如需对项目目录中的文件列表运行 lint请使用以下命令
lint [flags] project directory例如您可以发出以下命令来扫描 myproject 目录及其子目录下的文件。问题 ID MissingPrefix 提示 lint 仅扫描是否存在缺少 Android 命名空间前缀的 XML 属性。
lint --check MissingPrefix myproject要查看该工具支持的标志和命令行参数的完整列表请使用以下命令
lint --help下例显示了对一个名为 Earthquake 的项目运行 lint 命令时的控制台输出。
$ lint EarthquakeScanning Earthquake: ...............................................................................................................................
Scanning Earthquake (Phase 2): .......
AndroidManifest.xml:23: Warning: uses-sdk tag appears after application tag [ManifestOrder]uses-sdk android:minSdkVersion7 /^
AndroidManifest.xml:23: Warning: uses-sdk 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]uses-sdk android:minSdkVersion7 /^
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 布局文件中。
五、 推荐阅读
Java 专栏
SQL 专栏
数据结构与算法
Android学习专栏