电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

詳解Android Lint的原理及其使用

瀏覽:6日期:2022-09-19 15:12:32
Android Lint 原理及使用詳解

Android Lint 是 ADT 16中引入的新工具,用于掃描 Android 項(xiàng)目源中的潛在錯(cuò)誤。

Lint 是 Android 提供的一個(gè)強(qiáng)大的,用于靜態(tài)掃描應(yīng)用源碼并找出其中的潛在問(wèn)題的實(shí)用工具。lint 工具可以檢查你的 Android 項(xiàng)目源文件是否有潛在的錯(cuò)誤,以及在正確性、安全性、性能、易用性、無(wú)障礙性和國(guó)際化方面是否需要優(yōu)化改進(jìn)。

Lint 既可以用作命令行工具,也可以與 Eclipse 和 IntelliJ 集成在一起。它被設(shè)計(jì)成獨(dú)立于 IDE 的工具,我們可以在 Android Studio 中非常方便的使用它。

Lint 的工作過(guò)程

lint 工具的代碼掃描工作流:

詳解Android Lint的原理及其使用

應(yīng)用源文件:源文件包含組成 Android 項(xiàng)目的文件,包括 Java、Kotlin 和 XML 文件、圖標(biāo)以及 ProGuard 配置文件。 lint.xml 文件:一個(gè)配置文件,可用于指定要排除的任何 lint 檢查以及自定義問(wèn)題嚴(yán)重級(jí)別。lint 工具:一個(gè)靜態(tài)代碼掃描工具,你可以從命令行或在 Android Studio 中對(duì) Android 項(xiàng)目運(yùn)行該工具。 lint 工具檢查可能會(huì)影響 Android 應(yīng)用的質(zhì)量和性能的代碼結(jié)構(gòu)問(wèn)題。強(qiáng)烈建議你先更正 lint 檢測(cè)到的所有錯(cuò)誤,然后再發(fā)布你的應(yīng)用。 lint 檢查結(jié)果:我們可以在控制臺(tái)或 Android Studio 的 Inspection Results 窗口中查看 lint 檢查結(jié)果。

Lint 的工作過(guò)程由 Lint Tool(檢測(cè)工具),Source Files(項(xiàng)目源文件) 和 lint.xml(配置文件) 三個(gè)部分組成,Lint Tool 讀取 Source Files,根據(jù) lint.xml 配置的規(guī)則(issue)輸出最終的結(jié)果。

Lint 的功能

Lint 可以檢查并發(fā)現(xiàn)以下幾類(lèi)問(wèn)題:

缺少翻譯(和未使用的翻譯) 布局性能問(wèn)題(所有以前實(shí)用 layoutopt 工具用來(lái)查找的問(wèn)題,等等) 數(shù)組大小不一致 可訪問(wèn)性和國(guó)際化問(wèn)題(硬編碼字符串,缺少 contentDescription 等) 圖標(biāo)問(wèn)題(例如缺少密度,重復(fù)的圖標(biāo),錯(cuò)誤的尺寸等) 可用性問(wèn)題(如未在文本字段中指定輸入類(lèi)型) Manifest 錯(cuò)誤問(wèn)題等級(jí)

Lint 發(fā)現(xiàn)的每個(gè)問(wèn)題都有描述信息和等級(jí),我們可以很方便地定位問(wèn)題,同時(shí)按照嚴(yán)重程度進(jìn)行解決。當(dāng)然,我們也可以手動(dòng)配置每個(gè)問(wèn)題的嚴(yán)重級(jí)別。Lint 本身包含大量已經(jīng)封裝好的接口,能提供豐富的代碼信息,開(kāi)發(fā)者可以基于這些信息進(jìn)行自定義規(guī)則的編寫(xiě)。

Lint 會(huì)按照問(wèn)題的嚴(yán)重程度分為幾個(gè)等級(jí):

Fatal Error Warning Information Ignore

問(wèn)題嚴(yán)重程序由高到低依次降低。

從命令行運(yùn)行 lint

如果你使用的是 Android Studio 或 Gradle,你可以在項(xiàng)目的根目錄下輸入以下某個(gè)命令,使用 Gradle 封裝容器對(duì)項(xiàng)目調(diào)用 lint 任務(wù):

在 Windows 上:

gradlew lint

在 Linux 或 Mac 上:

./gradlew lint

lint 工具完成其檢查后,會(huì)提供 XML 和 HTML 版 lint 報(bào)告的路徑。然后,我們可以轉(zhuǎn)到 HTML 報(bào)告并在瀏覽器中將其打開(kāi)

Android Studio 中使用 Lint

Lint 已經(jīng)被集成到 Android Studio,所以可以直接使用,使用非常方便。lint 的代碼掃描工具,可幫助你發(fā)現(xiàn)并更正代碼結(jié)構(gòu)質(zhì)量的問(wèn)題,而無(wú)需您實(shí)際執(zhí)行應(yīng)用,也不必編寫(xiě)測(cè)試用例。系統(tǒng)會(huì)報(bào)告該工具檢測(cè)到的每個(gè)問(wèn)題并提供問(wèn)題的描述消息和嚴(yán)重級(jí)別,以便你可以快速確定需要優(yōu)先進(jìn)行的關(guān)鍵改進(jìn)。此外,你還可以降低問(wèn)題的嚴(yán)重級(jí)別以忽略與項(xiàng)目無(wú)關(guān)的問(wèn)題,或者提高嚴(yán)重級(jí)別以突出特定問(wèn)題。

從菜單欄,選擇Analyze > Inspect Code

選擇檢查范圍

詳解Android Lint的原理及其使用

選擇后,點(diǎn)擊'OK',稍等一會(huì)就會(huì)生成掃描結(jié)果:

詳解Android Lint的原理及其使用

左側(cè)是問(wèn)題分類(lèi),選中一個(gè)問(wèn)題條目,則右側(cè)會(huì)展示具體的問(wèn)題代碼,這樣就可以很方便的進(jìn)行問(wèn)題排查、定位和更改了。

Android 的規(guī)則類(lèi)別:

Accessibility 輔助選項(xiàng),例如 ImageView 缺少 contentDescription 描述,String 編碼字符串等問(wèn)題。 Compliance 合規(guī)性,違反了Google Play的要求,比如使用了過(guò)期的庫(kù)版本,性能、安全性、API等級(jí)等沒(méi)有遵循新系統(tǒng)的要求等。 Correctness 不夠完美的編碼,比如硬編碼、使用過(guò)時(shí)API等。 Internationalization 國(guó)際化,如直接使用漢字,沒(méi)有使用資源引用等。 Interoperability 互操作性,比如和Kotln的交互等。 Performance 性能,例如:靜態(tài)引用,循環(huán)引用等。 Security 安全性,例如沒(méi)有使用 HTTPS 連接 Gradle,AndroidManifest 中的權(quán)限問(wèn)題等。 Usability 易用性,有更好的替換的,例如缺少某些倍數(shù)的切圖,排版、圖標(biāo)格式建議.png格式等等。lint 配置配置 lint 文件

我們可以在 lint.xml 文件中進(jìn)行 lint 配置。我們可以手動(dòng)創(chuàng)建該文件,并放置在 Android 項(xiàng)目的根目錄下。

lint.xml 文件由封閉的 父標(biāo)記組成,此標(biāo)記包含一個(gè)或多個(gè) 子元素。lint 會(huì)為每個(gè) 定義唯一的 id 屬性值。

<?xml version='1.0' encoding='UTF-8'?><lint><!-- list of issues to configure --></lint>

我們可以通過(guò)在 標(biāo)記中設(shè)置嚴(yán)重性級(jí)別屬性來(lái)更改某個(gè)問(wèn)題的嚴(yán)重性級(jí)別或?qū)υ搯?wèn)題停用 lint 檢查。

下面來(lái)看一個(gè)示例:

<?xml version='1.0' encoding='UTF-8'?><lint> <!-- Disable the given check in this project --> <issue 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 severity='error' /></lint>禁用某個(gè)文件或方法進(jìn)行 lint 檢查

如果我們?cè)?Android 項(xiàng)目中想對(duì)某個(gè)類(lèi)或方法禁用 lint 檢查,可以請(qǐng)向該代碼添加 @SuppressLint 注解。

以下示例展示了如何對(duì) onCreate 方法中的 NewApi 問(wèn)題停用 lint 檢查。lint 工具會(huì)繼續(xù)檢查該類(lèi)的其他方法中的 NewApi 問(wèn)題。

@SuppressLint('NewApi')@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

以下示例展示了如何對(duì) FeedProvider 類(lèi)中的 ParserError 問(wèn)題停用 lint 檢查:

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

要禁止 lint 檢查文件中的所有問(wèn)題,請(qǐng)使用 all 關(guān)鍵字,如下所示:

@SuppressLint('all')xml 文件的 lint 檢測(cè)配置

我們可以使用 tools:ignore 屬性對(duì) XML 文件的特定部分停用 lint 檢查。在 lint.xml 文件中添加以下命名空間值,以便 lint 工具能夠識(shí)別該屬性:

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

以下示例展示了如何對(duì) XML 布局文件的 元素中的 UnusedResources 問(wèn)題停用 lint 檢查。如果某個(gè)父元素聲明了 ignore 屬性,則該元素的子元素會(huì)繼承此屬性。在本示例中,也會(huì)對(duì) 子元素停用 lint 檢查。

<LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:tools='http://schemas.android.com/tools' tools:ignore='UnusedResources' > <TextViewandroid:text='@string/auto_update_prompt' /></LinearLayout>

要禁止檢查多個(gè)問(wèn)題,請(qǐng)使用以英文逗號(hào)分隔的字符串列出要禁止檢查的問(wèn)題。例如:

tools:ignore='NewApi,StringFormatInvalid'

要禁止 lint 檢查 XML 元素中的所有問(wèn)題,請(qǐng)使用 all 關(guān)鍵字,如下所示:

tools:ignore='all'通過(guò) Gradle 配置 lint 選項(xiàng)

通過(guò) Android Plugin for Gradle,我們可以使用模塊級(jí) build.gradle 文件中的 lintOptions {} 代碼塊配置某些 lint 選項(xiàng),例如要運(yùn)行或忽略哪些檢查。

例如:

android { ... lintOptions { // 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. check ’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 }}...在 Android Studio 中修改 lint 配置文件

我們可以很方便的在 Android Studio 中修改 lint 檢查時(shí)的配置。

Android Studio 附帶了許多 lint 及其他檢查配置文件,這些配置文件可通過(guò) Android 更新進(jìn)行更新。我們可以原封不動(dòng)地使用這些配置文件,也可以修改它們的名稱(chēng)、說(shuō)明、嚴(yán)重級(jí)別和范圍。當(dāng)然,還可以激活和禁用整組的配置文件或一組配置文件中的個(gè)別配置文件。

依次選擇 Analyze > Inspect Code,在 Specify Scope 對(duì)話框的 Inspection Profile 下,點(diǎn)擊 More。

此時(shí)將顯示 Inspections 對(duì)話框,其中列出了支持的檢查及其說(shuō)明:

詳解Android Lint的原理及其使用

選擇 Profile 下拉列表,以在 Default (Android Studio) 與 Project Default(活動(dòng)項(xiàng)目)檢查之間切換。 在左側(cè)窗格的 Inspections 對(duì)話框中,選擇一個(gè)頂級(jí)配置文件類(lèi)別,或展開(kāi)一個(gè)組并選擇特定的配置文件。選擇一個(gè)配置文件類(lèi)別后,我們可以將該類(lèi)別中的所有檢查項(xiàng)目當(dāng)作一個(gè)檢查項(xiàng)目進(jìn)行修改。 選擇 Manage 下拉列表,以復(fù)制檢查項(xiàng)目、對(duì)檢查項(xiàng)目進(jìn)行重命名、向檢查項(xiàng)目添加說(shuō)明以及導(dǎo)出/導(dǎo)入檢查項(xiàng)目。 操作完成后,點(diǎn)擊 OK。

以上就是詳解Android Lint的原理及其使用的詳細(xì)內(nèi)容,更多關(guān)于Android Lint的原理的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 新能源汽车电机定转子合装机 - 电机维修设备 - 睿望达 | 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 济南电缆桥架|山东桥架-济南航丰实业有限公司 | 厂房出租_厂房出售_产业园区招商_工业地产&nbsp;-&nbsp;中工招商网 | 地脚螺栓_材质_标准-永年县德联地脚螺栓厂家 | 外贸网站建设-外贸网站设计制作开发公司-外贸独立站建设【企术】 | 湖南教师资格网-湖南教师资格证考试网 | 药品冷藏箱厂家_低温冰箱_洁净工作台-济南欧莱博电子商务有限公司官网 | 搜木网 - 木业全产业链交易平台,免费搜货、低价买货! | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | UV-1800紫外光度计-紫外可见光度计厂家-翱艺仪器(上海)有限公司 | 安徽千住锡膏_安徽阿尔法锡膏锡条_安徽唯特偶锡膏_卡夫特胶水-芜湖荣亮电子科技有限公司 | 气动绞车,山东气动绞车,气动绞车厂家-烟台博海石油机械有限公司 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 单螺旋速冻机-双螺旋-流态化-隧道式-食品速冻机厂家-广州冰泉制冷 | 电竞馆加盟,沈阳网吧加盟费用选择嘉棋电竞_售后服务一体化 | 消电检公司,消电检价格,北京消电检报告-北京设施检测公司-亿杰(北京)消防工程有限公司 | led冷热冲击试验箱_LED高低温冲击试验箱_老化试验箱-爱佩百科 | 超声波成孔成槽质量检测仪-压浆机-桥梁预应力智能张拉设备-上海硕冠检测设备有限公司 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 厚壁钢管-厚壁无缝钢管-小口径厚壁钢管-大口径厚壁钢管 - 聊城宽达钢管有限公司 | 锯边机,自动锯边机,双面涂胶机-建业顺达机械有限公司 | 家用净水器代理批发加盟_净水机招商代理_全屋净水器定制品牌_【劳伦斯官网】 | 渣土车电机,太阳能跟踪器电机,蜗轮蜗杆减速电机厂家-淄博传强电机 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | 油冷式_微型_TDY电动滚筒_外装_外置式电动滚筒厂家-淄博秉泓机械有限公司 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | hc22_hc22价格_hc22哈氏合金—东锜特殊钢 | 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 隧道窑炉,隧道窑炉厂家-山东艾瑶国际贸易 | 99文库_实习生实用的范文资料文库站 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 锥形螺带干燥机(新型耙式干燥机)百科-常州丰能干燥工程 | 橡胶接头|可曲挠橡胶接头|橡胶软接头安装使用教程-上海松夏官方网站 | 常州减速机_减速机厂家_常州市减速机厂有限公司 | 塑钢课桌椅、学生课桌椅、课桌椅厂家-学仕教育设备首页 | 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 巨野月嫂-家政公司-巨野县红墙安康母婴护理中心 |