當前位置:首頁 » 安卓系統 » lintandroid

lintandroid

發布時間: 2022-10-01 20:14:05

『壹』 android lint怎麼用

定製Android-Lint檢查問題的現有規則 對Android-Lint發現的問題進行處理。可定製項目中採用的規則。 Android-Lint檢查問題列表 Android SDK Tools / ADT 20.0.3中所支持的默認檢查的所有問題。 有英文版本和中文版本。英文版本從Android-Lint中直接導出;中文版本還不完整,對每一條的解釋會逐步完善。 Android SDK自帶的APIDemo用Android-Lint檢查一下,也還報了很多的問題。 一、忽略XML文件中的問題 1.1 MissingPrefix問題 Layout的device_admin_sample.xml文件中定義了下面的Button [html] view plainprint? <Button android:id="@+id/set_password" android:layout_width="wrap_content" android:layout_height="wrap_content" android_layout_gravity="eastcenter_vertical" android:text="@string/set_password"> </Button> <Button android:id="@+id/set_password" android:layout_width="wrap_content" android:layout_height="wrap_content" android_layout_gravity="eastcenter_vertical" android:text="@string/set_password"> </Button>執行Android-Lint就會報MissingPrefix警告: 1.2 解決XML中的問題 可以在Lint Warnings View中解決(圖中圖標從左至右順序) Suppress this error with an annotation/attribute 點擊該圖標之後,直接更改了device_admin_sample.xml文件: [html] view plainprint? <Button android:id="@+id/set_password" android:layout_width="wrap_content" android:layout_height="wrap_content" android_layout_gravity="eastcenter_vertical" android:text="@string/set_password" tools:ignore="MissingPrefix" > </Button> <Button android:id="@+id/set_password" android:layout_width="wrap_content" android:layout_height="wrap_content" android_layout_gravity="eastcenter_vertical" android:text="@string/set_password" tools:ignore="MissingPrefix" > </Button>XML文件中直接增加了tools:ignore="MissingPrefix"。 Ignore in this file 在本文件中忽略,而在別的文件中仍然出現。 Ignore in this project 當前項目中都忽略該Issue。 執行之後,在本項目根目錄下創建了lint.xml的文件,內容為: [html] view plainprint? <?xml version="1.0"encoding="UTF-8"?> <lint> <issue id="MissingPrefix"severity="ignore" /> </lint> <?xml version="1.0"encoding="UTF-8"?> <lint> <issue id="MissingPrefix"severity="ignore" /> </lint> Always ignore 所有項目中都忽略。 [TIPS#1] Ignore in this project和 Always ignore操作,同執行Lint Warnings View中的最後一個Icon -- Options…,然後配置某一個項目或者全局設置中該Issue的Severity為ignore。 [TIPS#2] Eclipse中的實現有BUG,有時設置了這些Ignore操作,即便立即執行檢查也不一定生效,需要重啟Eclipse。 二、解決Java代碼中的問題 2.1 NewAPI問題 APIDemo中指明了支持最低API-1,但是代碼里卻用了API-3的介面,執行Lint會報錯: 2.2 解決問題 把游標放在報錯代碼處,會自動提示如何快速fix。 1. 前面紅色圓角框內是用Javaannotation方式解決(API-16之後才有):@SuppressLint『<IssueId>』或@TargetAPI(<api>) @SuppressLint 『<IssueId>』用來忽略<IssueId>。適用范圍在所調用的方法處或整個類中。 @TargetAPI(<api>)用來指示API用給定的<api>,而不是項目中指定的。適用范圍在所調用的方法處或整個類中。 2. 後麵粉紅色圓角框內同XML中解決方式——在本文件/ 本項目/ 全局范圍內忽略檢查。 三、命令行下解決問題 從上面Eclipse環境下的解決問題的方式知道,可以指定文件來定製Lint檢查Issue的處理方式。 下面是一個lint.xml的例子: [html] view plainprint? <?xml version="1.0" encoding="UTF-8"?> <lint> <!-- Disable the given check in thisproject --> <issue id="IconMissingDensityFolder" severity="ignore" /> <!-- Ignore the ObsoleteLayoutParamissue in the given files --> <issue id="ObsoleteLayoutParam"> <ignore path="res/layout/activation.xml" /> <ignore path="res/layout-xlarge/activation.xml" /> </issue> <!-- Ignore the UselessLeaf issue inthe given file --> <issue id="UselessLeaf"> <ignore path="res/layout/main.xml" /> </issue> <!-- Change the severity of hardcodedstrings to "error" --> <issue id="HardcodedText" severity="error" /> </lint> <?xml version="1.0" encoding="UTF-8"?> <lint> <!-- Disable the given check in thisproject --> <issue id="IconMissingDensityFolder" severity="ignore" /> <!-- Ignore the ObsoleteLayoutParamissue in the given files --> <issue id="ObsoleteLayoutParam"> <ignore path="res/layout/activation.xml" /> <ignore path="res/layout-xlarge/activation.xml" /> </issue> <!-- Ignore the UselessLeaf issue inthe given file --> <issue id="UselessLeaf"> <ignore path="res/layout/main.xml" /> </issue> <!-- Change the severity of hardcodedstrings to "error" --> <issue id="HardcodedText" severity="error" /> </lint>Lint.xml中關鍵是對issue(用id指定)的severity進行指定,並且可以指定該issue作用於指定的文件還是當前項目。 把lint.xml放在項目的根目錄中,命令行執行lint時候,lint就會用lint.xml中的規則。 另外,執行lint時還可以用參數--config<fileName>指定一個全局的配置用於所有的項目。當項目中已有lint.xml,則對於某個issue而言,在lint.xml中沒有對該issue特別定製的情況下,--config指定的文件<fileName>中的該issue的定製才起作用。 四、定製Lint檢查的規則 Android-Lint有默認的檢查和報錯的規則,但通過上面的分析知道,可以在Eclipse或者命令行下改變這種規則,從而可以定製Lint檢查的規則。 推薦定製的路線: 在Eclipse中基於現有的問題,逐個分析並解決,然後就能得到一個Eclipse自動生成的lint.xml這個定製文件; 然後這個lint.xml用於Eclipse和/或命令行下進行後續的檢查; 後續發現的問題再進一步處理,逐步完善lint.xml這個定製文件。 當然,如果有足夠的時間,完全也可以Review一遍Android-Lint已經支持的所有的Issue,對他們逐個進行定製。對這些Issue的 Review,也能加深對Android設計中問題解決和性能優化方法的理解。

『貳』 Android-Lint 檢查有關問題列表怎麼解決

定製Android-Lint檢查問題的現有規則
對Android-Lint發現的問題進行處理。可定製項目中採用的規則。
Android-Lint檢查問題列表
Android SDK Tools / ADT 20.0.3中所支持的默認檢查的所有問題。
有英文版本和中文版本。英文版本從Android-Lint中直接導出;中文版本還不完整,對每一條的解釋會逐步完善。

Android SDK自帶的APIDemo用Android-Lint檢查一下,也還報了很多的問題。

一、忽略XML文件中的問題
1.1 MissingPrefix問題
Layout的device_admin_sample.xml文件中定義了下面的Button

[html] view plainprint?

<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password">
</Button>
<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password">
</Button>執行Android-Lint就會報MissingPrefix警告:

1.2 解決XML中的問題
可以在Lint Warnings View中解決(圖中圖標從左至右順序)

Suppress this error with an annotation/attribute
點擊該圖標之後,直接更改了device_admin_sample.xml文件:

[html] view plainprint?

<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password"
tools:ignore="MissingPrefix" >
</Button>
<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password"
tools:ignore="MissingPrefix" >
</Button>XML文件中直接增加了tools:ignore="MissingPrefix"。

Ignore in this file
在本文件中忽略,而在別的文件中仍然出現。

Ignore in this project
當前項目中都忽略該Issue。

執行之後,在本項目根目錄下創建了lint.xml的文件,內容為:

[html] view plainprint?

<?xml version="1.0"encoding="UTF-8"?>
<lint>
<issue id="MissingPrefix"severity="ignore" />
</lint>
<?xml version="1.0"encoding="UTF-8"?>
<lint>
<issue id="MissingPrefix"severity="ignore" />
</lint> Always ignore
所有項目中都忽略。

[TIPS#1] Ignore in this project和 Always ignore操作,同執行Lint Warnings View中的最後一個Icon -- Options…,然後配置某一個項目或者全局設置中該Issue的Severity為ignore。

[TIPS#2] Eclipse中的實現有BUG,有時設置了這些Ignore操作,即便立即執行檢查也不一定生效,需要重啟Eclipse。

二、解決Java代碼中的問題
2.1 NewAPI問題
APIDemo中指明了支持最低API-1,但是代碼里卻用了API-3的介面,執行Lint會報錯:

2.2 解決問題
把游標放在報錯代碼處,會自動提示如何快速fix。

1. 前面紅色圓角框內是用Javaannotation方式解決(API-16之後才有):@SuppressLint『<IssueId>』或@TargetAPI(<api>)

@SuppressLint 『<IssueId>』用來忽略<IssueId>。適用范圍在所調用的方法處或整個類中。

@TargetAPI(<api>)用來指示API用給定的<api>,而不是項目中指定的。適用范圍在所調用的方法處或整個類中。

2. 後麵粉紅色圓角框內同XML中解決方式——在本文件/ 本項目/ 全局范圍內忽略檢查。

三、命令行下解決問題
從上面Eclipse環境下的解決問題的方式知道,可以指定文件來定製Lint檢查Issue的處理方式。

下面是一個lint.xml的例子:

[html] view plainprint?

<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Disable the given check in thisproject -->
<issue id="IconMissingDensityFolder" severity="ignore" />

<!-- Ignore the ObsoleteLayoutParamissue in the given files -->
<issue id="ObsoleteLayoutParam">
<ignore path="res/layout/activation.xml" />
<ignore path="res/layout-xlarge/activation.xml" />
</issue>

<!-- Ignore the UselessLeaf issue inthe given file -->
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
</issue>

<!-- Change the severity of hardcodedstrings to "error" -->
<issue id="HardcodedText" severity="error" />
</lint>
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Disable the given check in thisproject -->
<issue id="IconMissingDensityFolder" severity="ignore" />

<!-- Ignore the ObsoleteLayoutParamissue in the given files -->
<issue id="ObsoleteLayoutParam">
<ignore path="res/layout/activation.xml" />
<ignore path="res/layout-xlarge/activation.xml" />
</issue>

<!-- Ignore the UselessLeaf issue inthe given file -->
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
</issue>

<!-- Change the severity of hardcodedstrings to "error" -->
<issue id="HardcodedText" severity="error" />
</lint>Lint.xml中關鍵是對issue(用id指定)的severity進行指定,並且可以指定該issue作用於指定的文件還是當前項目。

把lint.xml放在項目的根目錄中,命令行執行lint時候,lint就會用lint.xml中的規則。

另外,執行lint時還可以用參數--config<fileName>指定一個全局的配置用於所有的項目。當項目中已有lint.xml,則對於某個issue而言,在lint.xml中沒有對該issue特別定製的情況下,--config指定的文件<fileName>中的該issue的定製才起作用。

四、定製Lint檢查的規則
Android-Lint有默認的檢查和報錯的規則,但通過上面的分析知道,可以在Eclipse或者命令行下改變這種規則,從而可以定製Lint檢查的規則。

推薦定製的路線:

在Eclipse中基於現有的問題,逐個分析並解決,然後我們就能得到一個Eclipse自動生成的lint.xml這個定製文件;
然後這個lint.xml用於Eclipse和/或命令行下進行後續的檢查;
後續發現的問題再進一步處理,逐步完善lint.xml這個定製文件。
當然,如果有足夠的時間,完全也可以Review一遍Android-Lint已經支持的所有的Issue,對他們逐個進行定製。對這些Issue的 Review,也能加深對Android設計中問題解決和性能優化方法的理解。

『叄』 怎樣定製Android-Lint檢查問題的現有規則

Android SDK自帶的APIDemo用Android-Lint檢查一下,也還報了很多的問題。

一、忽略XML文件中的問題

1.1 MissingPrefix問題

Layout的device_admin_sample.xml文件中定義了下面的Button

[html] view plainprint?

<Button

android:id="@+id/set_password"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android_layout_gravity="east|center_vertical"

android:text="@string/set_password">

</Button>

<Button

android:id="@+id/set_password"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android_layout_gravity="east|center_vertical"

android:text="@string/set_password">

</Button>執行Android-Lint就會報MissingPrefix警告:

1.2 解決XML中的問題

可以在Lint Warnings View中解決(圖中圖標從左至右順序)

Suppress this error with an annotation/attribute

點擊該圖標之後,直接更改了device_admin_sample.xml文件:

[html] view plainprint?

<Button

android:id="@+id/set_password"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android_layout_gravity="east|center_vertical"

android:text="@string/set_password"

tools:ignore="MissingPrefix" >

</Button>

<Button

android:id="@+id/set_password"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android_layout_gravity="east|center_vertical"

android:text="@string/set_password"

tools:ignore="MissingPrefix" >

</Button>XML文件中直接增加了tools:ignore="MissingPrefix"。

Ignore in this file

在本文件中忽略,而在別的文件中仍然出現。

Ignore in this project

當前項目中都忽略該Issue。

執行之後,在本項目根目錄下創建了lint.xml的文件,內容為:

[html] view plainprint?

<?xml version="1.0"encoding="UTF-8"?>

<lint>

<issue id="MissingPrefix"severity="ignore" />

</lint>

<?xml version="1.0"encoding="UTF-8"?>

<lint>

<issue id="MissingPrefix"severity="ignore" />

</lint> Always ignore

所有項目中都忽略。

[TIPS#1] Ignore in this project和 Always ignore操作,同執行Lint Warnings View中的最後一個Icon -- Options…,然後配置某一個項目或者全局設置中該Issue的Severity為ignore。

[TIPS#2] Eclipse中的實現有BUG,有時設置了這些Ignore操作,即便立即執行檢查也不一定生效,需要重啟Eclipse。

二、解決Java代碼中的問題

2.1 NewAPI問題

APIDemo中指明了支持最低API-1,但是代碼里卻用了API-3的介面,執行Lint會報錯:

2.2 解決問題

把游標放在報錯代碼處,會自動提示如何快速fix。

1. 前面紅色圓角框內是用Javaannotation方式解決(API-16之後才有):@SuppressLint『<IssueId>』或@TargetAPI(<api>)

@SuppressLint 『<IssueId>』用來忽略<IssueId>。適用范圍在所調用的方法處或整個類中。

@TargetAPI(<api>)用來指示API用給定的<api>,而不是項目中指定的。適用范圍在所調用的方法處或整個類中。

2. 後麵粉紅色圓角框內同XML中解決方式——在本文件/ 本項目/ 全局范圍內忽略檢查。

三、命令行下解決問題

從上面Eclipse環境下的解決問題的方式知道,可以指定文件來定製Lint檢查Issue的處理方式。

下面是一個lint.xml的例子:

[html] view plainprint?

<?xml version="1.0" encoding="UTF-8"?>

<lint>

<!-- Disable the given check in thisproject -->

<issue id="IconMissingDensityFolder" severity="ignore" />

<!-- Ignore the ObsoleteLayoutParamissue in the given files -->

<issue id="ObsoleteLayoutParam">

<ignore path="res/layout/activation.xml" />

<ignore path="res/layout-xlarge/activation.xml" />

</issue>

<!-- Ignore the UselessLeaf issue inthe given file -->

<issue id="UselessLeaf">

<ignore path="res/layout/main.xml" />

</issue>

<!-- Change the severity of hardcodedstrings to "error" -->

<issue id="HardcodedText" severity="error" />

</lint>

<?xml version="1.0" encoding="UTF-8"?>

<lint>

<!-- Disable the given check in thisproject -->

<issue id="IconMissingDensityFolder" severity="ignore" />

<!-- Ignore the ObsoleteLayoutParamissue in the given files -->

<issue id="ObsoleteLayoutParam">

<ignore path="res/layout/activation.xml" />

<ignore path="res/layout-xlarge/activation.xml" />

</issue>

『肆』 Android-Lint 檢查有關問題列表怎麼解決

定製Android-Lint檢查問題的現有規則
對Android-Lint發現的問題進行處理。可定製項目中採用的規則。
Android-Lint檢查問題列表
Android SDK Tools / ADT 20.0.3中所支持的默認檢查的所有問題。
有英文版本和中文版本。英文版本從Android-Lint中直接導出;中文版本還不完整,對每一條的解釋會逐步完善。

Android SDK自帶的APIDemo用Android-Lint檢查一下,也還報了很多的問題。

一、忽略XML文件中的問題
1.1 MissingPrefix問題
Layout的device_admin_sample.xml文件中定義了下面的Button

[html] view plainprint?

<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password">
</Button>
<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password">
</Button>執行Android-Lint就會報MissingPrefix警告:

1.2 解決XML中的問題
可以在Lint Warnings View中解決(圖中圖標從左至右順序)

Suppress this error with an annotation/attribute
點擊該圖標之後,直接更改了device_admin_sample.xml文件:

[html] view plainprint?

<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password"
tools:ignore="MissingPrefix" >
</Button>
<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password"
tools:ignore="MissingPrefix" >
</Button>XML文件中直接增加了tools:ignore="MissingPrefix"。

Ignore in this file
在本文件中忽略,而在別的文件中仍然出現。

Ignore in this project
當前項目中都忽略該Issue。

執行之後,在本項目根目錄下創建了lint.xml的文件,內容為:

[html] view plainprint?

<?xml version="1.0"encoding="UTF-8"?>
<lint>
<issue id="MissingPrefix"severity="ignore" />
</lint>
<?xml version="1.0"encoding="UTF-8"?>
<lint>
<issue id="MissingPrefix"severity="ignore" />
</lint> Always ignore
所有項目中都忽略。

[TIPS#1] Ignore in this project和 Always ignore操作,同執行Lint Warnings View中的最後一個Icon -- Options…,然後配置某一個項目或者全局設置中該Issue的Severity為ignore。

[TIPS#2] Eclipse中的實現有BUG,有時設置了這些Ignore操作,即便立即執行檢查也不一定生效,需要重啟Eclipse。

二、解決Java代碼中的問題
2.1 NewAPI問題
APIDemo中指明了支持最低API-1,但是代碼里卻用了API-3的介面,執行Lint會報錯:

2.2 解決問題
把游標放在報錯代碼處,會自動提示如何快速fix。

1. 前面紅色圓角框內是用Javaannotation方式解決(API-16之後才有):@SuppressLint『<IssueId>』或@TargetAPI(<api>)

@SuppressLint 『<IssueId>』用來忽略<IssueId>。適用范圍在所調用的方法處或整個類中。

@TargetAPI(<api>)用來指示API用給定的<api>,而不是項目中指定的。適用范圍在所調用的方法處或整個類中。

2. 後麵粉紅色圓角框內同XML中解決方式——在本文件/ 本項目/ 全局范圍內忽略檢查。

三、命令行下解決問題
從上面Eclipse環境下的解決問題的方式知道,可以指定文件來定製Lint檢查Issue的處理方式。

下面是一個lint.xml的例子:

[html] view plainprint?

<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Disable the given check in thisproject -->
<issue id="IconMissingDensityFolder" severity="ignore" />

<!-- Ignore the ObsoleteLayoutParamissue in the given files -->
<issue id="ObsoleteLayoutParam">
<ignore path="res/layout/activation.xml" />
<ignore path="res/layout-xlarge/activation.xml" />
</issue>

<!-- Ignore the UselessLeaf issue inthe given file -->
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
</issue>

<!-- Change the severity of hardcodedstrings to "error" -->
<issue id="HardcodedText" severity="error" />
</lint>
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Disable the given check in thisproject -->
<issue id="IconMissingDensityFolder" severity="ignore" />

<!-- Ignore the ObsoleteLayoutParamissue in the given files -->
<issue id="ObsoleteLayoutParam">
<ignore path="res/layout/activation.xml" />
<ignore path="res/layout-xlarge/activation.xml" />
</issue>

<!-- Ignore the UselessLeaf issue inthe given file -->
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
</issue>

<!-- Change the severity of hardcodedstrings to "error" -->
<issue id="HardcodedText" severity="error" />
</lint>Lint.xml中關鍵是對issue(用id指定)的severity進行指定,並且可以指定該issue作用於指定的文件還是當前項目。

把lint.xml放在項目的根目錄中,命令行執行lint時候,lint就會用lint.xml中的規則。

另外,執行lint時還可以用參數--config<fileName>指定一個全局的配置用於所有的項目。當項目中已有lint.xml,則對於某個issue而言,在lint.xml中沒有對該issue特別定製的情況下,--config指定的文件<fileName>中的該issue的定製才起作用。

『伍』 Android-Lint 檢查有關問題列表怎麼解決

定製Android-Lint檢查問題的現有規則
對Android-Lint發現的問題進行處理。可定製項目中採用的規則。
Android-Lint檢查問題列表
Android SDK Tools / ADT 20.0.3中所支持的默認檢查的所有問題。
有英文版本和中文版本。英文版本從Android-Lint中直接導出;中文版本還不完整,對每一條的解釋會逐步完善。

Android SDK自帶的APIDemo用Android-Lint檢查一下,也還報了很多的問題。

一、忽略XML文件中的問題
1.1 MissingPrefix問題
Layout的device_admin_sample.xml文件中定義了下面的Button

[html] view plainprint?

<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"

『陸』 怎樣定製Android-Lint檢查問題的現有規則

Android-Lint:查錯與代碼優化利器
Android-Lint的簡述:Lint檢查哪些問題;如何使用;有哪些選項;與其他系統集成Windows Live Blog。
定製Android-Lint檢查問題的現有規則
對Android-Lint發現的問題進行處理。可定製項目中採用的規則。
Android-Lint檢查問題列表
Android SDK Tools / ADT 20.0.3中所支持的默認檢查的所有問題。
有英文版本和中文版本。英文版本從Android-Lint中直接導出;中文版本還不完整,對每一條的解釋會逐步完善。
當然,最關鍵最權威的還是應該看官方網站:http://tools.android.com/tips/lint

Android SDK自帶的APIDemo用Android-Lint檢查一下,也還報了很多的問題。

一、忽略XML文件中的問題
1.1 MissingPrefix問題
Layout的device_admin_sample.xml文件中定義了下面的Button

[html] view plainprint?

<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password">
</Button>
<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password">
</Button>執行Android-Lint就會報MissingPrefix警告:

1.2 解決XML中的問題
可以在Lint Warnings View中解決(圖中圖標從左至右順序)

Suppress this error with an annotation/attribute
點擊該圖標之後,直接更改了device_admin_sample.xml文件:

[html] view plainprint?

<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password"
tools:ignore="MissingPrefix" >
</Button>
<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password"
tools:ignore="MissingPrefix" >
</Button>XML文件中直接增加了tools:ignore="MissingPrefix"。

Ignore in this file
在本文件中忽略,而在別的文件中仍然出現。

Ignore in this project
當前項目中都忽略該Issue。

執行之後,在本項目根目錄下創建了lint.xml的文件,內容為:

[html] view plainprint?

<?xml version="1.0"encoding="UTF-8"?>
<lint>
<issue id="MissingPrefix"severity="ignore" />
</lint>
<?xml version="1.0"encoding="UTF-8"?>
<lint>
<issue id="MissingPrefix"severity="ignore" />
</lint> Always ignore
所有項目中都忽略。

[TIPS#1] Ignore in this project和 Always ignore操作,同執行Lint Warnings View中的最後一個Icon -- Options…,然後配置某一個項目或者全局設置中該Issue的Severity為ignore。

[TIPS#2] Eclipse中的實現有BUG,有時設置了這些Ignore操作,即便立即執行檢查也不一定生效,需要重啟Eclipse。

二、解決Java代碼中的問題
2.1 NewAPI問題
APIDemo中指明了支持最低API-1,但是代碼里卻用了API-3的介面,執行Lint會報錯:

2.2 解決問題
把游標放在報錯代碼處,會自動提示如何快速fix。

1. 前面紅色圓角框內是用Javaannotation方式解決(API-16之後才有):@SuppressLint『<IssueId>』或@TargetAPI(<api>)

@SuppressLint 『<IssueId>』用來忽略<IssueId>。適用范圍在所調用的方法處或整個類中。

@TargetAPI(<api>)用來指示API用給定的<api>,而不是項目中指定的。適用范圍在所調用的方法處或整個類中。

2. 後麵粉紅色圓角框內同XML中解決方式——在本文件/ 本項目/ 全局范圍內忽略檢查。

三、命令行下解決問題
從上面Eclipse環境下的解決問題的方式知道,可以指定文件來定製Lint檢查Issue的處理方式。

下面是一個lint.xml的例子:

[html] view plainprint?

<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Disable the given check in thisproject -->
<issue id="IconMissingDensityFolder" severity="ignore" />

<!-- Ignore the ObsoleteLayoutParamissue in the given files -->
<issue id="ObsoleteLayoutParam">
<ignore path="res/layout/activation.xml" />
<ignore path="res/layout-xlarge/activation.xml" />
</issue>

<!-- Ignore the UselessLeaf issue inthe given file -->
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
</issue>

<!-- Change the severity of hardcodedstrings to "error" -->
<issue id="HardcodedText" severity="error" />
</lint>
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Disable the given check in thisproject -->
<issue id="IconMissingDensityFolder" severity="ignore" />

<!-- Ignore the ObsoleteLayoutParamissue in the given files -->
<issue id="ObsoleteLayoutParam">
<ignore path="res/layout/activation.xml" />
<ignore path="res/layout-xlarge/activation.xml" />
</issue>

<!-- Ignore the UselessLeaf issue inthe given file -->
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
</issue>

<!-- Change the severity of hardcodedstrings to "error" -->
<issue id="HardcodedText" severity="error" />
</lint>Lint.xml中關鍵是對issue(用id指定)的severity進行指定,並且可以指定該issue作用於指定的文件還是當前項目。

把lint.xml放在項目的根目錄中,命令行執行lint時候,lint就會用lint.xml中的規則。

另外,執行lint時還可以用參數--config<fileName>指定一個全局的配置用於所有的項目。當項目中已有lint.xml,則對於某個issue而言,在lint.xml中沒有對該issue特別定製的情況下,--config指定的文件<fileName>中的該issue的定製才起作用。

四、定製Lint檢查的規則
Android-Lint有默認的檢查和報錯的規則,但通過上面的分析知道,可以在Eclipse或者命令行下改變這種規則,從而可以定製Lint檢查的規則。

推薦定製的路線:

在Eclipse中基於現有的問題,逐個分析並解決,然後我們就能得到一個Eclipse自動生成的lint.xml這個定製文件;
然後這個lint.xml用於Eclipse和/或命令行下進行後續的檢查;
後續發現的問題再進一步處理,逐步完善lint.xml這個定製文件。
當然,如果有足夠的時間,完全也可以Review一遍Android-Lint已經支持的所有的Issue,對他們逐個進行定製。對這些Issue的 Review,也能加深我們對Android設計中問題解決和性能優化方法的理解。

注意:這里教你如何忽略Lint發現的問題,但你千萬不要上來就忽略,關鍵還是要解決這些發現的問題。即便是要忽略,也要確保你已經明白他們的含義,以及自己在做的操作(有時候,隱患恰恰被你給忽略過去了)!

特別地,一旦項目組決定採用Android-Lint,定製Lint規則要有對項目和團隊負責的專人來定製執行。Lint的目的是盡量多的暴露問題,解決問題,而個人會有刻意隱藏/規避錯誤的傾向。所以,驗收的時候,用大家討論認可的Lint規則做統一的執行檢查。

『柒』 怎樣定製Android-Lint檢查問題的現有規則

一、忽略XML文件中的問題
1.1 MissingPrefix問題
Layout的device_admin_sample.xml文件中定義了下面的Button

html] view plainprint?

執行Android-Lint就會報MissingPrefix警告:

1.2 解決XML中的問題
可以在Lint Warnings View中解決(圖中圖標從左至右順序)

Suppress this error with an annotation/attribute
點擊該圖標之後,直接更改了device_admin_sample.xml文件:

[html] view plainprint?

ML文件中直接增加了tools:ignore="MissingPrefix"。

Ignore in this file
在本文件中忽略,而在別的文件中仍然出現。

Ignore in this project
當前項目中都忽略該Issue。

執行之後,在本項目根目錄下創建了lint.xml的文件,內容為:

html] view plainprint?

熱點內容
電腦都連不上伺服器說ip不對 發布:2025-01-19 12:52:24 瀏覽:625
linux解壓到文件夾命令 發布:2025-01-19 12:43:20 瀏覽:425
父母訪問 發布:2025-01-19 12:33:05 瀏覽:794
加密文件如何編輯 發布:2025-01-19 12:31:18 瀏覽:219
androiddpi 發布:2025-01-19 12:21:15 瀏覽:655
伺服器鎖了怎麼解 發布:2025-01-19 12:06:58 瀏覽:301
DH演算法使用 發布:2025-01-19 11:57:30 瀏覽:932
Wcl上傳如何選擇伺服器 發布:2025-01-19 11:17:24 瀏覽:763
如何編程簡單給伺服器發一個指令 發布:2025-01-19 11:16:44 瀏覽:806
python控制台亂碼 發布:2025-01-19 10:55:38 瀏覽:364