読者です 読者をやめる 読者になる 読者になる

woshidan's blog

そんなことよりコードにダイブ。

やたらエラーが出ているAndroid Lintって何なんだ

よーし、お勉強も一通り終わったし、

ちょっとリストビュー自作してみたいなーとか、gitとどう連携させるだーとか思いながら、

新しいプロジェクト立ち上げたらappcompat_v7にエラーの×印がついていて、

え、まだ何もしてないよ!とものすごくびっくりしたので少し調べましたというより、

 

SDKダウンロードしてプロジェクト立ち上げただけですけど?(逆切れ)

 

とりあえず、エラー自体は新しくプロジェクトやライブラリを作成したりインポートしたときに自動生成ファイルがビルドされるまで少し時間がかかるものなのですが、

しばらく待つと消えました。

 

appcompat_v7のPropertiesを開いていってどこがエラーかと確認しにいったら

Android Lintのところで大量のエラーが出ていて、

え、これ全部対応するの!? 無理じゃない!? というかなんで!?

ってなったのですが、この辺調べた結果、

Android Lintでエラーがでる - コンピュータを楽しもう!

Android Lint - Android Tools Project Site

 

Android LintはAndroidのプロジェクト(見た印象同じワークスペース内のもの?)のソースコードを勝手に調べて、

  • Missing translations (and unused translations) (ライブラリで使っている言語のバージョンをきちんと全部用意してね)
  • Layout performance problems (all the issues the old layoutopt tool used to find, and more) (非効率なレイアウトファイル作ってないよね、古いレイアウト形式が使われていたりするのを見つけたりしたらエラーっていうよ)
  • Unused resources (使っていないリソースがあるなんて無駄なことしないよね)
  • Inconsistent array sizes (when arrays are defined in multiple configurations) (配列のサイズが途中から間違ってないよね)
  • Accessibility and internationalization problems (hardcoded strings, missing contentDescription, etc) (文字をソースコードの中に書いてないよね)
  • Icon problems (like missing densities, duplicate icons, wrong sizes, etc) (アイコンをきちんと画面密度・サイズごとに用意したよね。間違ったサイズ混じってないよね)
  • Usability problems (like not specifying an input type on a text field) (ユーザビリティの観点から考えて、おかしな実装してないよね)
  • Manifest errors (マニフェストファイル書き間違えてないよね)

といった(括弧内はてきとうな訳です)標準的なものに加えて、このパッケージを利用している場合起こりうるエラーを出力してくれる余計なお世話便利な機能だそうです。

 

細かすぎる気はしますが、このエラーを無視したり、実装したりしないと、GooglePlayへエクスポートできないそうです。

 

ADT 16 以降のものと連携させている場合、

  • Automatic fixes for many warnings (かなりの警告を自動的に修正します)
  • Lint gets run automatically on various editing operations (自動的に編集作業中に動作(上の自動修正のことかな))
  • Ability to suppress types of errors as well as specific instances of an error (特定のエラーを無視するように設定可)
  • Ability to configure issue severities (対応・表示するエラーを重要度で指定可)
  • Jump directly to the problem source from the lint view (問題のソースコードやファイルまで飛ぶ機能が有る)

ということなので、もうしばらくしたら親しくお付き合いすることも有るかもしれないし、

この余計なおせっかいやろうと叫んでるかもしれないなぁ、と思いました。

 

点検作業がしたいな、と思ったときは便利そうです。

 

追記:情弱なので、最初単にlintって書いてたのですが、lintってANdroid特有のものでなく、結構いろんな言語に対して(wikipediaによるとC言語が主?)決定的なバグではないが、バグの原因となるものを指摘してくれるプログラムのことらしいです。