@@ -92,16 +92,17 @@ android {
9292 }
9393 }
9494
95- flavorDimensions.addAll(listOf (" server" ))
95+ val serverDimension = " server"
96+ flavorDimensions.addAll(listOf (serverDimension))
9697 productFlavors {
9798 create(" dev" ) {
98- dimension = " server "
99+ dimension = serverDimension
99100 applicationIdSuffix = " .dev"
100101 resValue(" string" , " app_name" , " Movie DB Dev" )
101102 buildConfigField(" boolean" , " MOCK_DATA" , " true" )
102103 }
103104 create(" prd" ) {
104- dimension = " server "
105+ dimension = serverDimension
105106 resValue(" string" , " app_name" , " Movie DB" )
106107 buildConfigField(" boolean" , " MOCK_DATA" , " false" )
107108 }
@@ -120,13 +121,12 @@ android {
120121 }
121122 }
122123 }
123-
124124 compileOptions {
125- sourceCompatibility(JavaVersion .VERSION_11 )
126- targetCompatibility(JavaVersion .VERSION_11 )
125+ sourceCompatibility(JavaVersion .VERSION_17 )
126+ targetCompatibility(JavaVersion .VERSION_17 )
127127 }
128128 kotlinOptions {
129- jvmTarget = " 11 "
129+ jvmTarget = JavaVersion . VERSION_17 .toString()
130130// freeCompilerArgs = listOf("-Xallow-result-return-type")
131131 }
132132 // https://developer.android.com/topic/libraries/data-binding
@@ -135,7 +135,7 @@ android {
135135 compose = true
136136 }
137137 composeOptions {
138- kotlinCompilerExtensionVersion = " 1.4.0 "
138+ kotlinCompilerExtensionVersion = " 1.4.7 "
139139 }
140140 lint {
141141 checkReleaseBuilds = false
@@ -149,33 +149,33 @@ dependencies {
149149 implementation(" androidx.legacy:legacy-support-v4:1.0.0" )
150150 implementation(" androidx.constraintlayout:constraintlayout:2.1.4" )
151151 implementation(" androidx.recyclerview:recyclerview:1.3.0" )
152- implementation(" com.google.android.material:material:1.8 .0" )
153- implementation(" org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10 " )
154- implementation(" org.jetbrains.kotlin:kotlin-reflect:1.8.0 " )
152+ implementation(" com.google.android.material:material:1.9 .0" )
153+ implementation(" org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 " )
154+ implementation(" org.jetbrains.kotlin:kotlin-reflect:1.8.21 " )
155155 implementation(" androidx.multidex:multidex:2.0.1" )
156156
157157 // List of KTX extensions
158158 // https://developer.android.com/kotlin/ktx/extensions-list
159- implementation(" androidx.core:core-ktx:1.9 .0" )
160- implementation(" androidx.activity:activity-ktx:1.6 .1" )
161- implementation(" androidx.fragment:fragment-ktx:1.5.5 " )
159+ implementation(" androidx.core:core-ktx:1.10 .0" )
160+ implementation(" androidx.activity:activity-ktx:1.7 .1" )
161+ implementation(" androidx.fragment:fragment-ktx:1.5.7 " )
162162
163163 // Lifecycle
164164 // https://developer.android.com/jetpack/androidx/releases/lifecycle
165- implementation(" androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.0 " )
166- implementation(" androidx.lifecycle:lifecycle-livedata-ktx:2.6.0 " )
167- implementation(" androidx.lifecycle:lifecycle-runtime-ktx:2.6.0 " )
168- implementation(" androidx.lifecycle:lifecycle-common-java8:2.6.0 " )
165+ implementation(" androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1 " )
166+ implementation(" androidx.lifecycle:lifecycle-livedata-ktx:2.6.1 " )
167+ implementation(" androidx.lifecycle:lifecycle-runtime-ktx:2.6.1 " )
168+ implementation(" androidx.lifecycle:lifecycle-common-java8:2.6.1 " )
169169
170170 // Preferences DataStore
171171 // https://android-developers.googleblog.com/2020/09/prefer-storing-data-with-jetpack.html
172172 implementation(" androidx.datastore:datastore-preferences:1.0.0" )
173173
174174 // room
175175 // https://developer.android.com/topic/libraries/architecture/room
176- implementation(" androidx.room:room-runtime:2.5.0 " )
177- kapt(" androidx.room:room-compiler:2.5.0 " )
178- implementation(" androidx.room:room-ktx:2.5.0 " )
176+ implementation(" androidx.room:room-runtime:2.5.1 " )
177+ kapt(" androidx.room:room-compiler:2.5.1 " )
178+ implementation(" androidx.room:room-ktx:2.5.1 " )
179179
180180 // paging
181181 // https://developer.android.com/topic/libraries/architecture/paging
@@ -189,9 +189,9 @@ dependencies {
189189
190190 // coroutines
191191 // https://github.com/Kotlin/kotlinx.coroutines
192- implementation(" org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4 " )
193- implementation(" org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 " )
194- testImplementation(" org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4 " )
192+ implementation(" org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.0 " )
193+ implementation(" org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.0 " )
194+ testImplementation(" org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.0 " )
195195
196196 // moshi
197197 implementation(" com.squareup.moshi:moshi-kotlin:1.14.0" )
@@ -230,7 +230,7 @@ dependencies {
230230
231231 // firebase
232232 // https://firebase.google.com/docs/android/setup
233- implementation(platform(" com.google.firebase:firebase-bom:31.2.3 " ))
233+ implementation(platform(" com.google.firebase:firebase-bom:32.0.0 " ))
234234 implementation(" com.google.firebase:firebase-analytics-ktx" )
235235 implementation(" com.google.firebase:firebase-crashlytics-ktx" )
236236 implementation(" com.google.firebase:firebase-messaging-ktx" )
@@ -248,12 +248,12 @@ dependencies {
248248
249249 // unit test
250250 testImplementation(" junit:junit:4.13.2" )
251- testImplementation(" org.mockito:mockito-core:5.2.0 " )
251+ testImplementation(" org.mockito:mockito-core:5.3.1 " )
252252// testImplementation("org.mockito:mockito-inline:3.3.3")
253- testImplementation(" io.mockk:mockk:1.13.4 " )
253+ testImplementation(" io.mockk:mockk:1.13.5 " )
254254 testImplementation(" androidx.arch.core:core-testing:2.2.0" )
255255 testImplementation(" com.squareup.okhttp3:mockwebserver:5.0.0-alpha.2" )
256- testImplementation(" org.jetbrains.kotlin:kotlin-stdlib:1.8.10 " )
256+ testImplementation(" org.jetbrains.kotlin:kotlin-stdlib:1.8.21 " )
257257// testImplementation("org.robolectric:robolectric:4.3")
258258
259259 /* *
@@ -373,45 +373,46 @@ dependencies {
373373 // compose
374374 // https://developer.android.com/jetpack/compose/interop/adding
375375 // https://developer.android.com/jetpack/compose/setup
376- implementation(" androidx.compose:compose-bom:2023.01.00" )
377- androidTestImplementation(" androidx.compose:compose-bom:2023.01.00" )
378- // Android Studio Preview support
379- implementation(" androidx.compose.ui:ui-tooling-preview" )
380- debugImplementation(" androidx.compose.ui:ui-tooling" )
381- // Animations
382- implementation(" androidx.compose.animation:animation" )
376+ // implementation("androidx.compose.compiler:compiler:1.4.5")
377+ // implementation("androidx.compose:compose-bom:2023.04.00")
378+ // androidTestImplementation("androidx.compose:compose-bom:2023.04.00")
383379 // Foundation (Border, Background, Box, Image, Scroll, shapes, animations, etc.)
384- implementation(" androidx.compose.foundation:foundation" )
380+ implementation(" androidx.compose.foundation:foundation:1.4.3 " )
385381 // or Material Design 2
386- implementation(" androidx.compose.material:material" )
387- // Material Design
388- implementation(" androidx.compose.material3:material3" )
382+ implementation(" androidx.compose.material:material:1.4.3" )
383+ // Material Design 3
384+ implementation(" androidx.compose.material3:material3:1.1.0-rc01" )
385+ // Android Studio Preview support
386+ implementation(" androidx.compose.ui:ui-tooling-preview:1.4.3" )
387+ debugImplementation(" androidx.compose.ui:ui-tooling:1.4.3" )
388+ // UI Tests
389+ androidTestImplementation(" androidx.compose.ui:ui-test-junit4:1.5.0-alpha03" )
390+ debugImplementation(" androidx.compose.ui:ui-test-manifest:1.4.3" )
391+ // Animations
392+ implementation(" androidx.compose.animation:animation:1.4.3" )
389393 // Constraint layout
390394 implementation(" androidx.constraintlayout:constraintlayout-compose:1.0.1" )
391395 // Optional - Included automatically by material, only add when you need
392396 // the icons but not the material library (e.g. when using Material3 or a
393397 // custom design system based on Foundation)
394398// implementation("androidx.compose.material:material-icons-core")
395399 // Optional - Add full set of material icons
396- implementation(" androidx.compose.material:material-icons-extended" )
400+ implementation(" androidx.compose.material:material-icons-extended:1.4.3 " )
397401 // Optional - Add window size utils
398- implementation(" androidx.compose.material3:material3-window-size-class" )
402+ implementation(" androidx.compose.material3:material3-window-size-class:1.0.1 " )
399403 // Optional - Integration with activities
400- implementation(" androidx.activity:activity-compose:1.6 .1" )
404+ implementation(" androidx.activity:activity-compose:1.7 .1" )
401405 // Optional - Integration with ViewModels
402- implementation(" androidx.lifecycle:lifecycle-viewmodel-compose:2.6.0 " )
406+ implementation(" androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1 " )
403407 // Optional - Integration with LiveData
404- implementation(" androidx.compose.runtime:runtime-livedata" )
405- // UI Tests
406- androidTestImplementation(" androidx.compose.ui:ui-test-junit4" )
407- debugImplementation(" androidx.compose.ui:ui-test-manifest" )
408+ implementation(" androidx.compose.runtime:runtime-livedata:1.4.3" )
408409 // navigation
409410 implementation(" androidx.navigation:navigation-compose:2.5.3" )
410411 implementation(" androidx.hilt:hilt-navigation-compose:1.0.0" )
411412 // https://github.com/skydoves/landscapist
412- implementation(" com.github.skydoves:landscapist -bom:2.1.7" )
413- implementation(" com.github.skydoves:landscapist-glide" )
414- implementation(" com.github.skydoves:landscapist-placeholder" )
413+ // implementation("com.github.skydoves:landscape -bom:2.1.7")
414+ implementation(" com.github.skydoves:landscapist-glide:2.1.13 " )
415+ implementation(" com.github.skydoves:landscapist-placeholder:2.1.13 " )
415416 // https://google.github.io/accompanist/
416417 // https://github.com/google/accompanist
417418 val accompanistVersion = " 0.28.0"
@@ -461,15 +462,27 @@ project.afterEvaluate {
461462 sourceName = buildTypeName
462463 } else {
463464 sourcePath = " ${productFlavorName} /${buildTypeName} "
464- sourceName = " ${productFlavorName}${buildTypeName.capitalize()} "
465+ sourceName = " ${productFlavorName}${buildTypeName.replaceFirstChar {
466+ if (it.isLowerCase()) it.titlecase(
467+ Locale .getDefault()
468+ ) else it.toString()
469+ }} "
465470 }
466- val testTaskName = " test${sourceName.capitalize()} UnitTest"
471+ val testTaskName = " test${sourceName.replaceFirstChar {
472+ if (it.isLowerCase()) it.titlecase(
473+ Locale .getDefault()
474+ ) else it.toString()
475+ }} UnitTest"
467476 // Create coverage task of form 'testFlavorTypeCoverage' depending on 'testFlavorTypeUnitTest'
468477 task<JacocoReport >(" ${testTaskName} Coverage" ) {
469478 // where store all test to run follow second way above
470479 group = " coverage"
471480 description =
472- " Generate Jacoco coverage reports on the ${sourceName.capitalize()} build."
481+ " Generate Jacoco coverage reports on the ${sourceName.replaceFirstChar {
482+ if (it.isLowerCase()) it.titlecase(
483+ Locale .getDefault()
484+ ) else it.toString()
485+ }} build."
473486 val excludeFiles = arrayListOf (
474487 " **/R.class" , " **/R$*.class" , " **/BuildConfig.*" , " **/Manifest*.*" ,
475488 " **/*Test*.*" , " android/**/*.*" ,
0 commit comments