いろいろやっているとAndroidアプリを開発しはじめるときにいつもやることを忘れるので、その備忘録。
環境
- Android Studio: 2.3.3
- Gradle: 3.3
- Android Plugin for Gradle: 2.3.3
- Java8
使うライブラリ
- Gradle Retrolambda Plugin ... AndroidでJava8のラムダ式がつかえるようになるやつ
- Lombok ... JavaのボイラープレートコードをシンプルにしてくれるJavaのライブラリ
- Butter Knife ... Androidの View Injection ライブラリ
- Android-Orma ... Android用のO/R Mapper
- Dagger ... DIフレームワーク
- RxAndroid ... Androidのリアクティブプログラミングライブラリ
- Retrofit ... Web APIのクラインとライブラリ
- Picasso ... 画像読み込みライブラリ
- Icepick ... 状態の保存/復元をサポートするアノテーションライブラリ
- parceler ... Objectをシリアライズするアノテーションライブラリ
build.gradleを整える
Retrolambdaの導入
- build.gradle
buildscript { repositories { jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'me.tatarka:gradle-retrolambda:3.6.1' } } allprojects { repositories { jcenter() + mavenCentral() } }
- app/build.gradle
apply plugin: 'com.android.application' +apply plugin: 'me.tatarka.retrolambda' android { + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } }
Lombokの導入
- app/build.gradle
dependencies {
+ provided 'org.projectlombok:lombok:1.16.18'
}
Butter Knifeの導入
- app/build.gradle
dependencies { + compile 'com.jakewharton:butterknife:8.7.0' + annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0' }
RxAndroidの導入
- app/build.gradle
dependencies { + compile 'io.reactivex.rxjava2:rxandroid:2.0.1' + compile 'io.reactivex.rxjava2:rxjava:2.1.0' }
Retrofitの導入
- app/build.gradle
dependencies { + compile 'com.squareup.retrofit2:retrofit:2.3.0' + compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' // RxJavaのアダプター + compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' // OkHttpのロガー + compile 'com.squareup.retrofit2:converter-gson:2.3.0' // Gsonのコンバーター + compile 'com.google.code.gson:gson:2.8.1' // Gson }
Ormaの導入
- app/build.gradle
dependencies { + annotationProcessor 'com.github.gfx.android.orma:orma-processor:4.2.5' + compile 'com.github.gfx.android.orma:orma:4.2.5' }
Daggerの導入
- app/build.gradle
dependencies { + compile 'com.google.dagger:dagger:2.11' + annotationProcessor 'com.google.dagger:dagger-compiler:2.11' + provided 'javax.annotation:jsr250-api:1.0' }
Icepickの導入
- build.gradle
allprojects {
repositories {
jcenter()
mavenCentral()
+ maven {url "https://clojars.org/repo/"} // Icepick
}
}
- app/build.gradle
dependencies { + // Icepick + compile 'frankiesardo:icepick:3.2.0' + provided 'frankiesardo:icepick-processor:3.2.0' }
parcelerの導入
- app/build.gradle
dependencies { + // parceler + compile 'org.parceler:parceler-api:1.1.9' + annotationProcessor 'org.parceler:parceler:1.1.9' }
自分用の変更①: buildTypeにdebugを追加
- app/build.gradle
android { buildTypes { + debug { + applicationIdSuffix '.debug' + versionNameSuffix 'a' + } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
自分用の変更②: apkのファイル名を変更
- app/build.gradle
android { + android.applicationVariants.all { variant -> + if (variant.buildType.name == "release") { + variant.outputs.each { output -> + def newName = "${defaultConfig.applicationId}_ver${defaultConfig.versionName}_${variant.buildType.name}.apk" + output.outputFile = new File(output.outputFile.parent, newName) + } + } + } }
自分用の変更③: Support Libraryのバージョンを変数化
- app/build.gradle
+def support_lib_ver = '25.3.1' dependencies { - compile 'com.android.support:appcompat-v7:25.3.1' - compile 'com.android.support:design:25.3.1' + compile "com.android.support:appcompat-v7:${support_lib_ver}" + compile "com.android.support:design:${support_lib_ver}" }