いろいろやっていると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}" }