Android探索之旅 | Android Studio配合Lint檢測缺失Permission

程式設計師聯盟發表於2019-02-28

Android探索之旅 | Android Studio配合Lint檢測缺失Permission

— 作者 謝恩銘 轉載請註明出處

近來有一個Android小專案需要優化, 包括從AndroidManifest.xml刪除不必要的permission(許可權)。

需要刪除的許可權有點多, 而我又不是很確定哪些許可權對於App是必要的。如果我這樣做: 每刪除一個許可權, 就執行一下App, 看各樣功能正常不, 那就太費時間了。

或者, 我可以寫Android Instrumentation Test測試來檢測每一次刪除的permission是不是導致App執行錯誤。

但這些方法都好麻煩~

有沒有更簡單快捷的方式呢? 要知道程式設計師是要懂得偷懶的。

我想到了Lint。

Lint是什麼?


Lint是一種工具程式的名稱,它用來標記原始碼中,某些可疑的、不具結構性(可能造成bug)的段落。

它是一種靜態程式分析工具,最早適用於C語言,在UNIX平臺上開發出來。後來它成為通用術語,可用於描述在任何一種電腦程式語言中,用來標記原始碼中有疑義段落的工具。

Lint規則


Lint檢測不少規則, 你可以輸入以下命令來檢視:

lint --show複製程式碼

Android探索之旅 | Android Studio配合Lint檢測缺失Permission

Lint的報告


Lint的報告就是Lint檢測完指定專案後生成的一個檔案, 可以是HTML, XML等格式, 指明瞭哪些地方需要優化和改正。

Lint報告類似這樣:

Android探索之旅 | Android Studio配合Lint檢測缺失Permission
Lint報告

Lint測試生成的報告還可以被SonarQube這樣的開原始碼質量管理系統以圖表的形式展示出來, 非常利於專案優化。

下次我會寫一篇SonarQube配合各種工具生成報告的文章。先來一睹為快吧:

Android探索之旅 | Android Studio配合Lint檢測缺失Permission
Sonarqube報告

上圖是SonarQube的報告示例。

Android專案中使用Lint


Android的Lint官方教程, 需要番茄的連結:

developer.android.com/studio/writ…

我們可以在Android Studio的Gradle配置檔案中設定Lint的檢測規則:

Android探索之旅 | Android Studio配合Lint檢測缺失Permission

然後, 可以在Android Studio中直接啟動Lint檢測:

點選Android Studio的選單欄中的Analyze -> Inspect code, 選擇要用Lint檢測的專案(當然了, 你也可以不檢測所有Lint規則, 而是選擇Run Inspection by Name, 然後輸入規則名字, Lint就只會檢測此項規則 ), 可以是整個Project, 或者是一個Module :

Android探索之旅 | Android Studio配合Lint檢測缺失Permission

或者用命令列的模式來啟動Lint檢測:

到專案的根目錄中, 輸入下面的命令, 回車

./gradlew lint複製程式碼

Gradle工具就會編譯你的專案, 生成Lint測試的報告:

Android探索之旅 | Android Studio配合Lint檢測缺失Permission
Lint檢測結果

看到上圖中說:

Wrote HTML report to file:///home/exe/qksms/QKSMS/build/outputs/lint-results-noAnalyticsDebug.html
Wrote XML report to file:///home/exe/qksms/QKSMS/build/outputs/lint-results-noAnalyticsDebug.xml複製程式碼

意思是:

  • HTML格式的報告已生成, 在/home/exe/qksms/QKSMS/build/outputs/lint-results-noAnalyticsDebug.html
  • XML格式的報告已生成, 在/home/exe/qksms/QKSMS/build/outputs/lint-results-noAnalyticsDebug.xml

Android Studio中配合Lint來檢測缺失的permission


可以配置Lint檢測permission的規則, 點選Android Studio的選單欄中的File -> Settings, 在搜尋框中輸入lint, 再在子搜尋框中輸入permission, 然後可以勾選。

Android探索之旅 | Android Studio配合Lint檢測缺失Permission

在Android Studio中執行Lint, 或者用上面說過的命令列。

在生成的報告中, 可以檢視

Android -> Constant and Resource Type Mismatches

裡面就會有Missing permission

Android探索之旅 | Android Studio配合Lint檢測缺失Permission

總結


Lint是非常有用的一個程式碼監測工具, 可以審查很多種程式語言, 配合Android開發非常好用, 至於更多Lint的特性和使用, 請參考網上更多教程。


人世間,
萬千情感皆有溫度,
千萬程式碼似有性格。
這裡有原創教程,IT叢林……
和你一起探索程式人生。
微信公眾號「程式設計師聯盟」ProgrammerLeague
我是謝恩銘,在巴黎奮鬥的嵌入式軟體工程師。
個人簡介
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:“向著標杆直跑”

相關文章