俺得gradleテンプレート(随時更新)

  • 38
    Like
  • 0
    Comment

私は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'
}