イマドキなイカした Android のオープンソースライブラリ集

今から Android やるならチェックしておきたい、厳選イカしたオープンソースライブラリ一覧。

support-v4 や support-v7-appcompat などは公式のものなので割愛。

# 開発環境

## Android SDK

- [Android SDK Installer](https://github.com/embarkmobile/android-sdk-installer)

公式からダウンロードしてポチポチとチェックを入れてはダウンロードして…が面倒くさいならコレ。
シェルからコマンド一発でダウンロード出来るので、CI で使うのにも便利。

- [ADB Idea](https://github.com/pbreault/adb-idea)

AndroidStudio および IntelliJ 用のプラグインで、IDE から ADB コマンドを簡単に利用できるようにするためのもの。メニューから選択してコマンドを実行できるようにしてくれる。

# コード最適化

## DI コンテナ

- [Dagger](https://github.com/square/dagger)

square 社の Android および Java 向け DI コンテナ。
`javax.inject.Inject` アノテーションを使う。
コンパイル時にコードを生成する。

- [Proton](https://github.com/hnakagawa/proton)

Android 向け DI コンテナ。
`javax.inject.Inject` アノテーションを使う。
実行時にインスタンスを注入する。

- [ButterKnife](https://github.com/JakeWharton/butterknife)

View のインジェクションに特化している。

- [RoboGuice](https://github.com/roboguice/roboguice)

Google が提供する Guice の Android 向けラッパー。
`javax.inject.Inject` アノテーションを使う他、独自にインジェクション用のアノテーションも提供している。

## View の生成

- [Michelangelo](https://github.com/RomainPiel/Michelangelo)

アノテーションを用いてカスタムビューのコードを整理できる。
ビューがインフレートされた後に実行したい処理をアノテーションで示すことも出来る。

## リソース

- [Paraphrase](https://github.com/JakeWharton/paraphrase)

文字列リソースのフォーマットをよりリーダブルに、かつデバッガブルにするためのライブラリ。
文字列リソースのフォーマットに関するプログラミングのエラーが、ランタイムではなくコンパイル時に判明するようになる。

## ユーティリティ

- [AndroidAnnotations](https://github.com/excilys/androidannotations)

アノテーションを使って、コンパイル時にコードを自動生成させることで、プログラマの書くコード量を減らすライブラリ。
DI コンテナとして、View やシステムサービス、リソース、Intent に含まれる Extra を注入することが出来る他、メソッドがメインスレッドで実行されるかバックグラウンドスレッドで実行されるかも制御できる。

- [Amalgam](https://github.com/nohana/Amalgam/)

Apache Commons のような Commons ライブラリで、Android 用。
`Context#getSystemService(String)` のラッパーや、各種 Manager 類のラッパーがある。

- [Guava](https://github.com/google/guava)

Apache Commons のような Commons ライブラリ。
Java 向けに各種のユーティリティが取り揃えられている。

## 機種依存解決

- [AndroidDeviceCompatibility](https://github.com/mixi-inc/Android-Device-Compatibility)

機種ごとの依存を吸収する為のライブラリ。

## モジュール化

- [android-promise](https://github.com/hnakagawa/android-promise)

非同期な処理をモジュール化する為のライブラリ。

# UI コンポーネント

## Pull to refresh

- [ActionBar PullToRefresh](https://github.com/chrisbanes/ActionBar-PullToRefresh)

引っ張ると ActionBar に更新の表示が出る UI コンポーネント。

- [Android PullToRefresh](https://github.com/chrisbanes/Android-PullToRefresh/)

Twitter スタイルの引っ張り更新の UI コンポーネント。
現在メンテは終了しており、使うのであれば、上記の ActionBar PullToRefresh を使うほうが良い。

## ActionBar

- [FadingActionBar](https://github.com/ManuelPeinado/FadingActionBar)

ActionBar にフェードアウト効果を適用するためのライブラリ。

- [GlassActionBar](https://github.com/ManuelPeinado/GlassActionBar)

ActionBar に透かし窓のような効果を適用するためのライブラリ。

## WebView

- [Chromium WebView](https://github.com/mogoweb/chromium_webview)

KitKat で導入された、Chromium エンジンの WebView のバックポートライブラリ。
これを使えば、OS バージョンや機種ごとの WebKit の実装依存問題が解決できるかもしれない。

## Text・Font

- [emojicon](https://github.com/rockerhieu/emojicon)

TextView 上に絵文字を表示するためのライブラリ。

- [IonIconView](https://github.com/MarsVard/IonIconView)

ionicons.com で提供されているアイコンを View に表示可能にするライブラリ。

- [Android Iconify](https://github.com/JoanZapata/android-iconify)

FontAwesome の各種フォントをアプリ内で使えるようにするライブラリ。

- [Calligraphy](https://github.com/chrisjenx/Calligraphy)

カスタムフォントを容易に扱えるようにしてくれるライブラリ。

## Calendar

- [ExtendedCalendarView](https://github.com/tyczj/ExtendedCalendarView)

カレンダーのコンテンツを保持する DB とセットで、イベントを表示できるカレンダー View を提供してくれるライブラリ。

- [GoogleCalendarView](https://github.com/tyczj/GoogleCalendarView)

Google 公式のカレンダーアプリからのバックポート。

## エフェクト

- [Android StackBlur](https://github.com/kikoso/android-stackblur)

Bitmap にブラーのエフェクトをかける。

- [GPUImage Android](https://github.com/CyberAgent/android-gpuimage)

iOS 向けに作られていた GPU Image の Android 移植版。

## 通知

- [SuperToasts](https://github.com/JohnPersano/SuperToasts)

Toast を拡張して、ボタンを置いたり見た目を少し変えたりすることが出来るようになるライブラリ。

- [Crouton](https://github.com/keyboardsurfer/Crouton)

標準の Toast の代替として、Context に依存してカスタム可能な Toast を提供する。

## レイアウト

- [ImageLayout](https://github.com/ManuelPeinado/ImageLayout)

画像の上に View を配置するための特別なレイアウトコンポーネント。
独自の座標系を持って管理している。

## ListView・GridView

- [StickyListHeaders](https://github.com/emilsjolander/StickyListHeaders)

Instagram のような、ListView のスクロールに追従してくるヘッダを提供する。

- [StickyGridHeaders](https://github.com/TonicArtos/StickyGridHeaders)

上記ライブラリの GridView 版。

- [Android StaggeredGrid](https://github.com/etsy/AndroidStaggeredGrid)

高さの異なるグリッドを扱える。

- [AdapterView Animator](https://github.com/SimonVT/adapterviewanimator)

AdapterView の行を追加したときのアニメーションを実現するヘルパライブラリ。

- [cwac-touchlist](https://github.com/commonsguy/cwac-touchlist)

List のドラッグ・アンド・ドロップを実現するライブラリ。

## ViewPager

- [JazzyViewPager](https://github.com/jfeinstein10/JazzyViewPager)

スワイプ時のアニメーションをカスタマイズできる。

- [Android ViewPagerIndicator](https://github.com/JakeWharton/Android-ViewPagerIndicator)

ViewPager に追随して位置表示する View。

## Dialog

- [Android Styled Dialogs](https://github.com/inmite/android-styled-dialogs)

ダイアログにテーマでスタイルを適用出来るようにするためのライブラリ。

## ImageView

- [CustomShape ImageView](https://github.com/MostafaGazar/CustomShapeImageView)

画像をくり抜いて、様々な形に出来る ImageView。

- [Rounded ImageView](https://github.com/vinc3m1/RoundedImageView)

角丸の ImageView を作れるライブラリ。

- [PhotoView](https://github.com/chrisbanes/PhotoView)
- [ImageViewZoom](https://github.com/sephiroth74/ImageViewZoom)

画像の拡大縮小機能を持つ ImageView。

## チャート

- [Holo Graph Library](https://bitbucket.org/danielnadeau/holographlibrary)

Holo スタイルのグラフ・チャートを作るライブラリ。

- [AChartEngine](https://code.google.com/p/achartengine/)

こちらも、グラフ・チャートを作るライブラリ。

## Interaction

- [Android Swipe To Dismiss](https://github.com/romannurik/Android-SwipeToDismiss)

View をスワイプして消す操作を実現するライブラリ。

- [EnhancedListView](https://github.com/timroes/EnhancedListView)

Gmail のように、行をスワイプすることで削除を実行するインタラクションを実現でき、かつ、Undo の機能も有する ListView の拡張。

## その他

- [Android Sliding Up Panel](https://github.com/umano/AndroidSlidingUpPanel)

Google Play Music のように、下からせり出してくるパネルを表示するライブラリ。

- [CardsLib](https://github.com/gabrielemariotti/cardslib)

カード UI を構築するためのライブラリセット。

- [ProgressWheel](https://github.com/Todd-Davies/ProgressWheel)

ぐるぐる回るプログレスバーをカスタマイズするライブラリ。

- [Android Bootstrap](https://github.com/Bearded-Hen/Android-Bootstrap)

FontAwesome と共に Bootstrap スタイルのボタン類を使えるようにするライブラリ。

- [Android Satellite Menu](https://github.com/siyamed/android-satellite-menu)

Path みたいなメニューを構築するライブラリ。

- [NineOldAndroids](https://github.com/JakeWharton/NineOldAndroids)

API 11 から登場したアニメーションフレームワークをバックポートするライブラリ。

- [Holo Everywhere](https://github.com/Prototik/HoloEverywhere)

Holo テーマのバックポートライブラリ。

- [Holo ColorPicker](https://github.com/LarsWerkman/HoloColorPicker)

色を選択する View のライブラリ。

- [Android Validator](https://github.com/throrin19/Android-Validator)

入力のバリデーションのためのライブラリ。

- [android-gifview](https://code.google.com/p/android-gifview/)

Gif アニメーションを再生可能な View のライブラリ。

# シリアライズ

## Json

- [Google Gson](https://code.google.com/p/google-gson/)

リフレクションによってマッピングするライブラリ。

- [Jackson](http://jackson.codehaus.org/)

超高速にシリアライズ・デシリアライズできるライブラリ。

# データベース

## ORM

- [GreenDAO](https://github.com/greenrobot/greenDAO)

グリーンだよ！いいんだよ！

スキーマ、エンティティをそれぞれ定義するクラスを使ってマッピングする。

- [Active Android](https://github.com/pardom/ActiveAndroid)

エンティティクラスの宣言にアノテーションを付けてマッピングする。

# イベントバス

使い方は[こちら](http://qiita.com/KeithYokoma/items/793aaac6994c9242808f)。

- [otto](https://github.com/square/otto)

Guava ベースの Android 向け軽量イベントバス。

- [EventBus](https://github.com/greenrobot/EventBus)

otto より機能的に拡張のあるイベントバス。

# デバッグ支援

## View

- [scalpel](https://github.com/JakeWharton/scalpel)

View の階層構造を 3D 表示するためのツール。

## リソース

- [Madge](https://github.com/JakeWharton/madge)

Bitmap がオリジナルのサイズで表示されているかどうかを一目見て分かるようにする。

## クラッシュログ

- [Native Crash Handler](https://github.com/SalomonBrys/Native-Crash-Handler)

Native コードのエラーハンドリングとして、SIGSEGV などを検出して Java の例外を生成してくれる。
これによって、Google Play などで拾いきれなかったクラッシュのログを収集できるようになる。

## ログ出力

- [hugo](https://github.com/JakeWharton/hugo)

アノテーションによるメソッドコールのロギングライブラリ。

- [deploygate](http://deploygate.com/)

ログ収集だけでなく、apk の配布までも楽ちんにしてくれるサービス。
sdk を組み込めばかなりのことが Web コンソール上で出来る。

# 画像

## 画像読み込み・キャッシュ

- [Android Universal Image Loader](https://github.com/nostra13/Android-Universal-Image-Loader)

各種設定に基いて画像の読み込み・キャッシュ・表示をしてくれるライブラリ。

- [picasso](https://github.com/square/picasso)

メソッドチェーンによる画像読み込み・キャッシュ・表示の為のライブラリ。

## 加工

- [CropImage](https://github.com/biokys/cropimage)

画像の切り抜きをサポートするライブラリ。

# ハイブリッドアプリケーション開発

ネイティブ実装をベースに、JavaScriptInterface と連携してハイブリッドアプリケーションを開発するフレームワーク。

- [Hybridge](https://github.com/rejasupotaro/Hybridge)
- [triaina](https://github.com/mixi-inc/triaina)

# テスト

## テストユーティリティ

- [fest-android](https://github.com/square/fest-android)

Android のテストに FEST を導入できる。

- [robolectric](https://github.com/robolectric/robolectric)

Android のテストの高速化

- [Robotium](https://code.google.com/p/robotium/)

UI のテストを Selenium のようにかける、かつ Android フレームワークが持つ UI テストフレームワークを拡張している。

## モック

- [Mockito](https://code.google.com/p/mockito/)

いろんなものをモックするためのライブラリ。

- [RobotGirl](https://github.com/rejasupotaro/RobotGirl)

ActiveAndroid 向けのフィクスチャライブラリ。

# 通信

## REST

- [Retrofit](https://github.com/square/retrofit)
- [RoboZombie](https://github.com/sahan/RoboZombie)

REST クライアントを簡単に生成するためのライブラリ。


## Http通信・SPDY

- [okhttp](https://github.com/square/okhttp)

http(s) 通信 と SPDY に対応したクライアント。

- [volley](https://android.googlesource.com/platform/frameworks/volley/)

通信処理をいろいろ便利にしてくれるユーティリティ。

# ビルドスクリプト

## Gradle

- [Gradle Android Utils](https://github.com/gfx/gradle-android-utils)

ビルドスクリプトのユーティリティ集。

- [Gradle MVN Push](https://github.com/chrisbanes/gradle-mvn-push)

Maven Repository に aar な成果物を push するヘルパ。

- [Gradle Android Test Plugin](https://github.com/JakeWharton/gradle-android-test-plugin)

Gradle で Android のテストを実行するためのヘルパプラグイン。

# その他便利系

## アップデートチェック

- [UpdateChecker](https://github.com/rampo/UpdateChecker)

アップデートがあった時にダイアログを出す。

## レビュー

- [RateThisApp](https://github.com/kskkbys/Android-RateThisApp)

レビューを促すダイアログを出す。

## Job Queue

- [Priority JobQueue](https://github.com/path/android-priority-jobqueue)

優先度付きのジョブキュー

- [nirai](https://github.com/jfsso/nirai)

IntentService によるジョブキューの仕組み。
詳しくは[こちら](http://qiita.com/jfsso/items/106f48de7ec0612038bb)

## SharedPreferences

- [esperandro](https://github.com/dkunzler/esperandro)

SharedPreferences のラッパー。