@@ -1,8 +1,13 @@
 apply plugin: 'com.android.application'
-
 apply plugin: 'kotlin-android'
-
 apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-kapt'
+apply plugin: 'com.google.gms.google-services'
+apply plugin: 'io.fabric'
+
+def keystorePropertiesFile = rootProject.file("keystore.properties")
+def keystoreProperties = new Properties()
+keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
 
 android {
     compileSdkVersion 28
@@ -13,20 +18,57 @@ android {
         versionCode 1
         versionName "1.0"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+        multiDexEnabled true
     }
     buildTypes {
+        debug {
+            // FIXME debug/release에 따라서 base url, key 등이 따로 쓰이도록 설정해주세요. 개발환경과 배포환경에서 쓰이는 값들이 분리되어야 합니다.
+            buildConfigField "String", "BaseServerURL", keystoreProperties.getProperty("baseServerUrl")
+            buildConfigField "String", "TmapApiKey", keystoreProperties.getProperty("tMapApiKey")
+            buildConfigField "String", "GoogleApiKey", keystoreProperties.getProperty("googleApiKey")
+            buildConfigField "String", "BaseGoogleUrl", keystoreProperties.getProperty("baseGoogleUrl")
+            buildConfigField "String", "NaverClientId", keystoreProperties.getProperty("naverClientId")
+            buildConfigField "String", "KakaoLocalUrl", keystoreProperties.getProperty("kakaoLocalUrl")
+            buildConfigField "String", "KakaoServiceKey", keystoreProperties.getProperty("kakaoServiceKey")
+            buildConfigField "String", "GooglePlacesApiKey", keystoreProperties.getProperty("googlePlacesApiKey")
+            buildConfigField "boolean", "isDebug", "true"
+        }
         release {
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+            buildConfigField "String", "BaseServerURL", keystoreProperties.getProperty("baseServerUrl")
+            buildConfigField "String", "TmapApiKey", keystoreProperties.getProperty("tMapApiKey")
+            buildConfigField "String", "GoogleApiKey", keystoreProperties.getProperty("googleApiKey")
+            buildConfigField "String", "BaseGoogleUrl", keystoreProperties.getProperty("baseGoogleUrl")
+            buildConfigField "String", "NaverClientId", keystoreProperties.getProperty("naverClientId")
+            buildConfigField "String", "KakaoLocalUrl", keystoreProperties.getProperty("kakaoLocalUrl")
+            buildConfigField "String", "KakaoServiceKey", keystoreProperties.getProperty("kakaoServiceKey")
+            buildConfigField "String", "GooglePlacesApiKey", keystoreProperties.getProperty("googlePlacesApiKey")
+            buildConfigField "boolean", "isDebug", "false"
         }
     }
+    dataBinding {
+        enabled = true
+    }
+    androidExtensions {
+        experimental = true
+    }
+
+    configurations {
+        all*.exclude group: 'com.google.guava', module: 'listenablefuture'
+    }
+    packagingOptions {
+        exclude 'META-INF/proguard/androidx-annotations.pro'
+    }
+    sourceSets { main { assets.srcDirs = ['src/main/assets', 'src/main/assets/'] } }
 }
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
     implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
     implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
+
     testImplementation 'junit:junit:4.12'
     androidTestImplementation 'androidx.test:runner:1.1.1'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
@@ -37,21 +79,74 @@ dependencies {
     //ktx
     implementation "androidx.core:core-ktx:$ktx_version"
 
+    //chrome custom tabs
+    implementation "androidx.browser:browser:$browser_version"
+
     //retrofit
-    implementation "com.squareup.retrofit2:retrofit:2.4.0"
-    implementation "com.squareup.retrofit2:converter-gson:2.4.0"
-    implementation "com.squareup.retrofit2:adapter-rxjava2:2.4.0"
+    implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
+    implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
+    implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"
 
-    //dagger
-    implementation "com.google.dagger:dagger:$dagger_version"
-    annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"
-    //dagger android
-    implementation "com.google.dagger:dagger-android:$dagger_version"
-    implementation "com.google.dagger:dagger-android-support:$dagger_version"
-    annotationProcessor "com.google.dagger:dagger-android-processor:$dagger_version"
+    //okhttp3
+    implementation "com.squareup.okhttp3:logging-interceptor:$okhttp3_version"
 
-    //
-    kapt "com.android.databinding:compiler:$compiler_version"
+    //koin
+    implementation "org.koin:koin-android:$koin_version"
+    implementation "org.koin:koin-androidx-viewmodel:$koin_version"
 
+    //glide
+    implementation "com.github.bumptech.glide:glide:$glide_version"
+    kapt "com.github.bumptech.glide:compiler:$glide_version"
 
-}
+    //design
+    implementation 'androidx.coordinatorlayout:coordinatorlayout:1.0.0'
+
+    //firebase
+    implementation "com.google.firebase:firebase-database:$firebase_version"
+
+    //firebase Auth
+    implementation "com.google.firebase:firebase-auth:$firebase_auth_version"
+    implementation "com.google.android.gms:play-services-auth:$play_services_auth_version"
+
+    //rxjava
+    implementation "io.reactivex.rxjava2:rxandroid:$rxandroid_version"
+    implementation "io.reactivex.rxjava2:rxjava:$rxjava_version"
+
+    //firebase core
+    implementation "com.google.firebase:firebase-core:$firebase_version"
+
+    //crashlytics
+    implementation "com.crashlytics.sdk.android:crashlytics:$crashlytics_version"
+
+    //MPchart
+    implementation "com.github.PhilJay:MPAndroidChart:$mpchart_version"
+
+    //stetho
+    implementation "com.facebook.stetho:stetho:$stetho_version"
+    implementation "com.facebook.stetho:stetho-js-rhino:$stetho_version"
+
+    //Naver Map
+    implementation "com.naver.maps:map-sdk:$naver_map_version"
+
+    //ted permission
+    implementation "gun0912.ted:tedpermission-rx2:$tedpermission_version"
+
+    //naver 위치 구현을 하기 위한 library
+    implementation "androidx.multidex:multidex:$multidex_version"
+
+    //room
+    implementation "android.arch.persistence.room:runtime:$room_version"
+    kapt "android.arch.persistence.room:compiler:$room_version"
+    kaptTest "android.arch.persistence.room:testing:$room_version"
+    implementation "android.arch.persistence.room:rxjava2:$room_version"
+
+    //lottie
+    implementation "com.airbnb.android:lottie:$lottie_version"
+
+    //rxbinding
+    implementation "com.jakewharton.rxbinding3:rxbinding:$rx_binding_version"
+
+    implementation("com.google.android.libraries.places:places:1.0.0") {
+        exclude group: 'com.google.guava', module: 'listenablefuture'
+    }
+}
\ No newline at end of file

리뷰: 현재 구현된 사항이므로, 제거되어도 좋을 주석으로 보이는데 확인 부탁드립니다. 

이런 주석의 경우, 다음에 다른 개발자, 혹은 미래의 나   가 볼 때 혼동의 여지를 줄 수 있습니다.