くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

AndroidStudioで開発をはじめるときにすること~build.gradle編~

いろいろやっているとAndroidアプリを開発しはじめるときにいつもやることを忘れるので、その備忘録。

環境
  1. Android Studio: 2.3.3
  2. Gradle: 3.3
  3. Android Plugin for Gradle: 2.3.3
  4. Java8
使うライブラリ
  1. Gradle Retrolambda PluginAndroidでJava8のラムダ式がつかえるようになるやつ
  2. LombokJavaのボイラープレートコードをシンプルにしてくれるJavaのライブラリ
  3. Butter KnifeAndroidの View Injection ライブラリ
  4. Android-OrmaAndroid用のO/R Mapper
  5. Dagger … DIフレームワーク
  6. RxAndroidAndroidのリアクティブプログラミングライブラリ
  7. Picasso … 画像読み込みライブラリ

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

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

自分用の変更①: 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}"
 }