私はAndroidAnnotationsをほとんど全てのアプリで使っているのですが、Android Annotationsを導入するために毎回ググるのが面倒なのでここに書いておきます。
Android Studio 2.2 (で使われているGradleビルドツール2.2) から、アノテーションプロセッシングが組み込まれるようになり、以下の記述をするだけで AndroidAnnotations を使うことができます。
dependencies {
annotationProcessor 'org.androidannotations:androidannotations:4.3.1'
compile 'org.androidannotations:androidannotations-api:4.3.1'
// OrmLite
// annotationProcessor 'org.androidannotations:ormlite:4.3.1'
// compile 'org.androidannotations:ormlite-api:4.3.1'
// Rest client
// annotationProcessor 'org.androidannotations:rest-spring:4.3.1'
// compile 'org.androidannotations:rest-spring-api:4.3.1'
}
ただし、この方法でビルドしているとたまにうまく動かない場面に遭遇したりします。そういうときは従来からのandroid-apt
プラグインを使う方法で対応します。
以下のようにビルドスクリプトの依存関係としてcom.neenbedankt.gradle.plugins:android-apt
を追加してandroid-apt
プラグインを適用します。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.3'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // android-aptを使うために必要
}
}
repositories {
jcenter()
}
apply plugin: 'com.android.application'
apply plugin: 'android-apt' // アノテーションプロセッシングをするのに必要
dependencies {
// AndroidAnnotations
apt 'org.androidannotations:androidannotations:4.3.1'
compile 'org.androidannotations:androidannotations-api:4.3.1'
// AndroidAnnotations OrmLite
// apt 'org.androidannotations:ormlite:4.3.1'
// compile 'org.androidannotations:ormlite-api:4.3.1'
// AndroidAnnotations Rest client
// apt 'org.androidannotations:rest-spring:4.3.1'
// compile 'org.androidannotations:rest-spring-api:4.3.1'
}
// アノテーションプロセッシングを行うための設定
apt {
arguments {
androidManifestFile variant.outputs[0].processResources.manifestFile
resourcePackageName android.defaultConfig.applicationId
}
}
android {
...
}
いろいろなライブラリまとめ
私がよく使う便利なライブラリたち。
Fabric
Analytics代わりに入れたり、クラッシュレポートを受け取ったり。導入が若干面倒。
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.19.0'
}
}
repositories {
maven { url 'https://maven.fabric.io/public' }
}
apply plugin: 'io.fabric' // Fabric
dependencies {
compile('com.twitter.sdk.android:twitter:1.14.1@aar') { transitive = true; } // Twitter Kit
compile('com.crashlytics.sdk.android:crashlytics:2.2.4@aar') { transitive = true; } // Crashlytics Kit
}
Firebase
google-services.json のダウンロードとコピーを忘れずにおこなうこと!(ドキュメント参照)
dependencies {
def firebaseVer = '10.0.1'
compile "com.google.firebase:firebase-core:$firebaseVer" // Analytics
compile "com.google.firebase:firebase-database:$firebaseVer" // Realtime Database
compile "com.google.firebase:firebase-storage:$firebaseVer" // Storage
compile "com.google.firebase:firebase-crash:$firebaseVer" // Crash Reporting
compile "com.google.firebase:firebase-auth:$firebaseVer" // Authentication
compile "com.google.firebase:firebase-messaging:$firebaseVer" // Cloud Messaging / Notifications
compile "com.google.firebase:firebase-config:$firebaseVer" // Remote Config
compile "com.google.firebase:firebase-invites:$firebaseVer" // Invites
compile "com.google.firebase:firebase-invites:$firebaseVer" // Dynamic Links
compile "com.google.firebase:firebase-ads:$firebaseVer" // AdMob
compile "com.google.android.gms:play-services-appindexing:$firebaseVer" // App Indexing
}
apply plugin: 'com.google.gms.google-services'
Support Library
dependencies {
def supportLibVer = '25.1.0';
compile "com.android.support:support-v4:$supportLibVer"
compile 'com.android.support:multidex:1.0.1'
compile "com.android.support:appcompat-v7:$supportLibVer"
compile "com.android.support:cardview-v7:$supportLibVer"
compile "com.android.support:gridlayout-v7:$supportLibVer"
compile "com.android.support:mediarouter-v7:$supportLibVer"
compile "com.android.support:palette-v7:$supportLibVer"
compile "com.android.support:recyclerview-v7:$supportLibVer"
compile "com.android.support:preference-v7:$supportLibVer"
compile "com.android.support:support-v13:$supportLibVer"
compile "com.android.support:preference-v14:$supportLibVer"
compile "com.android.support:leanback-v17:$supportLibVer"
compile "com.android.support:support-annotations:$supportLibVer"
compile "com.android.support:design:$supportLibVer"
compile "com.android.support:customtabs:$supportLibVer"
compile "com.android.support:percent:$supportLibVer"
}
Google Play Service
dependencies {
def playServiceVer = '10.0.1';
compile "com.google.android.gms:play-services-plus:$playServiceVer"
compile "com.google.android.gms:play-services-identity:$playServiceVer"
compile "com.google.android.gms:play-services-base:$playServiceVer"
compile "com.google.android.gms:play-services-appindexing:$playServiceVer"
compile "com.google.android.gms:play-services-appinvite:$playServiceVer"
compile "com.google.android.gms:play-services-analytics:$playServiceVer"
compile "com.google.android.gms:play-services-cast:$playServiceVer"
compile "com.google.android.gms:play-services-gcm:$playServiceVer"
compile "com.google.android.gms:play-services-drive:$playServiceVer"
compile "com.google.android.gms:play-services-fitness:$playServiceVer"
compile "com.google.android.gms:play-services-location:$playServiceVer"
compile "com.google.android.gms:play-services-maps:$playServiceVer"
compile "com.google.android.gms:play-services-ads:$playServiceVer"
compile "com.google.android.gms:play-services-vision:$playServiceVer"
compile "com.google.android.gms:play-services-nearby:$playServiceVer"
compile "com.google.android.gms:play-services-panorama:$playServiceVer"
compile "com.google.android.gms:play-services-games:$playServiceVer"
compile "com.google.android.gms:play-services-safetynet:$playServiceVer"
compile "com.google.android.gms:play-services-wallet:$playServiceVer"
compile "com.google.android.gms:play-services-wearable:$playServiceVer"
}
LoganSquare
JSONシリアライズ・デシリアライズライブラリ。GSONやJacksonと違って実行時にリフレクションを利用せず、コンパイル時に自動生成されるクラスで処理を行うため、高速。
dependencies {
annotationProcessor 'com.bluelinelabs:logansquare-compiler:1.3.6'
compile 'com.bluelinelabs:logansquare:1.3.6'
}
Apache Commons
いくつかあるけど、Androidプロジェクトで使うことがあるのは以下のものくらい?
Commons IO
InputStreamやファイル読み書きのユーティリティライブラリ。ファイル全体を文字列として読み込んだり、行ごとに処理したり、ファイルやディレクトリをコピーしたり移動したり……といった処理を簡単に書ける。
Commons Lang
大抵のプロジェクトで共通して書かれるif (x != null && x.equals(y))
のような、よくある処理を簡単に書けるようにするユーティリティメソッドライブラリ。
dependencies {
compile 'commons-io:commons-io:2.5' // Commons IO
compile 'org.apache.commons:commons-lang3:3.4' // Commons Lang
}
Gson
JSON文字列←→Javaオブジェクトの変換を行うライブラリ。Androidでは動作が遅いと言われているリフレクションを使うのでLoganSquareよりもパフォーマンスが劣ってしまうが、クラスへのアノテーションが不要なので気軽に導入できる。
dependencies {
compile 'com.google.code.gson:gson:2.8.0'
}
AndroidAsync
HTTPクライアント・サーバーのライブラリで、WebSocketクライアント・サーバー、Socket.ioクライアントの実装を含む。アプリ内でHTTPサーバーを動作させて端末のファイルを外部からのHTTPリクエストに応じて送信するような仕組みや、WebSocketでWebブラウザからリモートコントロールするような仕組みが作れる。
dependencies {
compile 'com.koushikdutta.async:androidasync:2.1.9'
}