Skip to content
This repository was archived by the owner on Jan 5, 2023. It is now read-only.

Commit 9c20fdd

Browse files
JoseAlcerrecatiembo
authored andcommitted
Migrates iosched from dagger.android to Hilt
Change-Id: I8d62e8f597c60ede12df8d66284e1fdd9d75134d
1 parent d5b168f commit 9c20fdd

File tree

127 files changed

+498
-2023
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+498
-2023
lines changed

build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ buildscript {
2727
maven { url = uri("https://maven.fabric.io/public") }
2828
// Android Build Server
2929
maven { url = uri("../iosched-prebuilts/m2repository") }
30+
// Hilt Jetpack integrations
31+
maven { url = uri("https://androidx.dev/snapshots/builds/6515566/artifacts/repository") }
3032
}
3133
dependencies {
3234
classpath("com.android.tools.build:gradle:${Versions.ANDROID_GRADLE_PLUGIN}")
@@ -35,6 +37,7 @@ buildscript {
3537
classpath("androidx.benchmark:benchmark-gradle-plugin:${Versions.BENCHMARK}")
3638
classpath("androidx.navigation:navigation-safe-args-gradle-plugin:${Versions.NAVIGATION}")
3739
classpath("io.fabric.tools:gradle:${Versions.FABRIC}")
40+
classpath("com.google.dagger:hilt-android-gradle-plugin:${Versions.HILT}")
3841
}
3942
}
4043

@@ -57,6 +60,8 @@ allprojects {
5760
maven {
5861
url = uri("${project.rootDir}/../../../prebuilts/fullsdk/linux/extras/support/m2repository")
5962
}
63+
// Hilt Jetpack integrations
64+
maven { url = uri("https://androidx.dev/snapshots/builds/6515566/artifacts/repository") }
6065

6166
flatDir {
6267
dirs = setOf(file("libs"), project(":ar").file("libs"))

buildSrc/src/main/java/Libs.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
object Libs {
1818
const val ACTIVITY_KTX = "androidx.activity:activity-ktx"
19+
const val ANDROIDX_HILT_COMPILER = "androidx.hilt:hilt-compiler"
1920
const val APPCOMPAT = "androidx.appcompat:appcompat"
2021
const val ARCH_TESTING = "androidx.arch.core:core-testing"
2122
const val ARCORE = "com.google.ar:core"
@@ -27,10 +28,6 @@ object Libs {
2728
const val CRASHLYTICS = "com.crashlytics.sdk.android:crashlytics"
2829
const val COROUTINES = "org.jetbrains.kotlinx:kotlinx-coroutines-core"
2930
const val COROUTINES_TEST = "org.jetbrains.kotlinx:kotlinx-coroutines-test"
30-
const val DAGGER_ANDROID = "com.google.dagger:dagger-android"
31-
const val DAGGER_ANDROID_PROCESSOR = "com.google.dagger:dagger-android-processor"
32-
const val DAGGER_ANDROID_SUPPORT = "com.google.dagger:dagger-android-support"
33-
const val DAGGER_COMPILER = "com.google.dagger:dagger-compiler"
3431
const val DRAWER_LAYOUT = "androidx.drawerlayout:drawerlayout"
3532
const val ESPRESSO_CONTRIB = "androidx.test.espresso:espresso-contrib"
3633
const val ESPRESSO_CORE = "androidx.test.espresso:espresso-core"
@@ -51,6 +48,10 @@ object Libs {
5148
const val GOOGLE_PLAY_SERVICES_VISION = "com.google.android.gms:play-services-vision"
5249
const val GSON = "com.google.code.gson:gson"
5350
const val HAMCREST = "org.hamcrest:hamcrest-library"
51+
const val HILT_ANDROID = "com.google.dagger:hilt-android"
52+
const val HILT_VIEWMODEL = "androidx.hilt:hilt-lifecycle-viewmodel"
53+
const val HILT_COMPILER = "com.google.dagger:hilt-android-compiler"
54+
const val HILT_TESTING = "com.google.dagger:hilt-android-testing"
5455
const val INK_PAGE_INDICATOR = "com.pacioianu.david:ink-page-indicator"
5556
const val JUNIT = "junit:junit"
5657
const val KOTLIN_STDLIB = "org.jetbrains.kotlin:kotlin-stdlib-jdk7"

buildSrc/src/main/java/Versions.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ object Versions {
3131
const val GOOGLE_SERVICES = "4.3.3"
3232
const val KOTLIN = "1.3.70"
3333
const val NAVIGATION = "2.2.0"
34+
const val HILT = "2.28-alpha"
3435

3536
// TODO: Remove this once the version for
3637
// "org.threeten:threetenbp:${Versions.threetenbp}:no-tzdb" using java-platform in the

depconstraints/build.gradle.kts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ val core = "1.2.0"
3131
val coroutines = "1.3.4"
3232
val coroutinesTest = "1.3.4"
3333
val crashlytics = "2.9.8"
34-
val dagger = "2.26"
3534
val drawerLayout = "1.1.0-beta01"
3635
val espresso = "3.1.1"
3736
val firebaseAnalytics = "17.4.0"
@@ -49,7 +48,9 @@ val googlePlayServicesMaps = "16.0.0"
4948
val googlePlayServicesVision = "17.0.2"
5049
val gson = "2.8.6"
5150
val hamcrest = "1.3"
52-
val junit = "4.12"
51+
val hilt = Versions.HILT
52+
val hiltJetPack = "1.0.0-SNAPSHOT"
53+
val junit = "4.13"
5354
val junitExt = "1.1.1"
5455
val lifecycle = "2.2.0"
5556
val lottie = "3.0.0"
@@ -70,6 +71,7 @@ val viewpager2 = "1.0.0"
7071
dependencies {
7172
constraints {
7273
api("${Libs.ACTIVITY_KTX}:$activity")
74+
api("${Libs.ANDROIDX_HILT_COMPILER}:$hiltJetPack")
7375
api("${Libs.APPCOMPAT}:$appcompat")
7476
api("${Libs.CARDVIEW}:$cardview")
7577
api("${Libs.ARCH_TESTING}:$archTesting")
@@ -81,10 +83,6 @@ dependencies {
8183
api("${Libs.COROUTINES}:$coroutines")
8284
api("${Libs.COROUTINES_TEST}:$coroutines")
8385
api("${Libs.CRASHLYTICS}:$crashlytics")
84-
api("${Libs.DAGGER_ANDROID}:$dagger")
85-
api("${Libs.DAGGER_ANDROID_SUPPORT}:$dagger")
86-
api("${Libs.DAGGER_COMPILER}:$dagger")
87-
api("${Libs.DAGGER_ANDROID_PROCESSOR}:$dagger")
8886
api("${Libs.DRAWER_LAYOUT}:$drawerLayout")
8987
api("${Libs.ESPRESSO_CORE}:$espresso")
9088
api("${Libs.ESPRESSO_CONTRIB}:$espresso")
@@ -104,6 +102,10 @@ dependencies {
104102
api("${Libs.GOOGLE_PLAY_SERVICES_VISION}:$googlePlayServicesVision")
105103
api("${Libs.GSON}:$gson")
106104
api("${Libs.HAMCREST}:$hamcrest")
105+
api("${Libs.HILT_ANDROID}:$hilt")
106+
api("${Libs.HILT_COMPILER}:$hilt")
107+
api("${Libs.HILT_TESTING}:$hilt")
108+
api("${Libs.HILT_VIEWMODEL}:$hiltJetPack")
107109
api("${Libs.JUNIT}:$junit")
108110
api("${Libs.EXT_JUNIT}:$junitExt")
109111
api("${Libs.KOTLIN_STDLIB}:${Versions.KOTLIN}")

mobile/build.gradle.kts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ plugins {
2121
kotlin("kapt")
2222
id("androidx.navigation.safeargs.kotlin")
2323
id("io.fabric")
24+
id("dagger.hilt.android.plugin")
2425
}
2526

2627
android {
@@ -179,13 +180,14 @@ dependencies {
179180
testImplementation(Libs.ROOM_KTX)
180181
testImplementation(Libs.ROOM_RUNTIME)
181182

182-
// Dagger
183-
implementation(Libs.DAGGER_ANDROID)
184-
implementation(Libs.DAGGER_ANDROID_SUPPORT)
185-
kapt(Libs.DAGGER_COMPILER)
186-
kapt(Libs.DAGGER_ANDROID_PROCESSOR)
187-
kaptAndroidTest(Libs.DAGGER_COMPILER)
188-
kaptAndroidTest(Libs.DAGGER_ANDROID_PROCESSOR)
183+
// Dagger Hilt
184+
implementation(Libs.HILT_ANDROID)
185+
implementation(Libs.HILT_VIEWMODEL)
186+
androidTestImplementation(Libs.HILT_TESTING)
187+
kapt(Libs.HILT_COMPILER)
188+
kapt(Libs.ANDROIDX_HILT_COMPILER)
189+
kaptAndroidTest(Libs.HILT_COMPILER)
190+
kaptAndroidTest(Libs.ANDROIDX_HILT_COMPILER)
189191

190192
// Glide
191193
implementation(Libs.GLIDE)

mobile/src/androidTest/java/com/google/samples/apps/iosched/tests/CustomTestRunner.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,17 @@ package com.google.samples.apps.iosched.tests
1919
import android.app.Application
2020
import android.content.Context
2121
import androidx.test.runner.AndroidJUnitRunner
22+
import dagger.hilt.android.testing.CustomTestApplication
2223

2324
/**
24-
* A custom [AndroidJUnitRunner] used to replace the application used in tests with a
25-
* [MainTestApplication].
25+
* A custom [AndroidJUnitRunner] used to replace the application used in tests. Note that Hilt
26+
* generates a [CustomTestRunner_Application] based on the the [MainTestApplication] defined in
27+
* the [CustomBaseTestApplication] annotation.
2628
*/
29+
@CustomTestApplication(MainTestApplication::class)
2730
class CustomTestRunner : AndroidJUnitRunner() {
2831

2932
override fun newApplication(cl: ClassLoader?, name: String?, context: Context?): Application {
30-
return super.newApplication(cl, MainTestApplication::class.java.name, context)
33+
return super.newApplication(cl, CustomTestRunner_Application::class.java.name, context)
3134
}
3235
}

mobile/src/androidTest/java/com/google/samples/apps/iosched/tests/MainTestApplication.kt

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,17 @@
1616

1717
package com.google.samples.apps.iosched.tests
1818

19-
import com.google.samples.apps.iosched.MainApplication
20-
import com.google.samples.apps.iosched.tests.di.DaggerTestAppComponent
21-
import dagger.android.AndroidInjector
22-
import dagger.android.DaggerApplication
19+
import android.app.Application
20+
import com.jakewharton.threetenabp.AndroidThreeTen
2321

24-
class MainTestApplication : MainApplication() {
22+
/**
23+
* Used as a base application for Hilt to run instrumented tests through the [CustomTestRunner].
24+
*/
25+
open class MainTestApplication : Application() {
2526

26-
/**
27-
* Tell Dagger which [AndroidInjector] to use - in our case
28-
* [com.google.samples.apps.iosched.tests.di.TestAppComponent]. `DaggerTestAppComponent`
29-
* is a class generated by Dagger based on the `TestAppComponent` class.
30-
*/
31-
override fun applicationInjector(): AndroidInjector<out DaggerApplication> {
32-
return DaggerTestAppComponent.builder().create(this)
27+
override fun onCreate() {
28+
// ThreeTenBP for times and dates, called before super to be available for objects
29+
AndroidThreeTen.init(this)
30+
super.onCreate()
3331
}
3432
}

mobile/src/androidTest/java/com/google/samples/apps/iosched/tests/di/TestAppComponent.kt

Lines changed: 0 additions & 66 deletions
This file was deleted.

mobile/src/androidTest/java/com/google/samples/apps/iosched/tests/di/TestCoroutinesModule.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,13 @@ import com.google.samples.apps.iosched.shared.di.MainDispatcher
2323
import com.google.samples.apps.iosched.shared.di.MainImmediateDispatcher
2424
import dagger.Module
2525
import dagger.Provides
26+
import dagger.hilt.InstallIn
27+
import dagger.hilt.android.components.ApplicationComponent
2628
import kotlinx.coroutines.CoroutineDispatcher
2729
import kotlinx.coroutines.Dispatchers
2830
import kotlinx.coroutines.asCoroutineDispatcher
2931

32+
@InstallIn(ApplicationComponent::class)
3033
@Module
3134
object TestCoroutinesModule {
3235

mobile/src/androidTest/java/com/google/samples/apps/iosched/tests/ui/AgendaTest.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,26 @@ import androidx.test.espresso.matcher.ViewMatchers.withParent
2525
import androidx.test.espresso.matcher.ViewMatchers.withText
2626
import androidx.test.ext.junit.runners.AndroidJUnit4
2727
import com.google.samples.apps.iosched.R
28+
import com.google.samples.apps.iosched.di.CoroutinesModule
2829
import com.google.samples.apps.iosched.tests.SetPreferencesRule
2930
import com.google.samples.apps.iosched.tests.SyncTaskExecutorRule
31+
import dagger.hilt.android.testing.HiltAndroidRule
32+
import dagger.hilt.android.testing.HiltAndroidTest
33+
import dagger.hilt.android.testing.UninstallModules
3034
import org.hamcrest.CoreMatchers.allOf
3135
import org.hamcrest.CoreMatchers.instanceOf
3236
import org.junit.Rule
3337
import org.junit.Test
3438
import org.junit.runner.RunWith
3539

40+
@HiltAndroidTest
41+
@UninstallModules(CoroutinesModule::class)
3642
@RunWith(AndroidJUnit4::class)
3743
class AgendaTest {
3844

45+
@get:Rule
46+
var hiltRule = HiltAndroidRule(this)
47+
3948
@get:Rule
4049
var activityRule = MainActivityTestRule(R.id.navigation_agenda)
4150

mobile/src/androidTest/java/com/google/samples/apps/iosched/tests/ui/CodelabTest.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,26 @@ import androidx.test.espresso.matcher.ViewMatchers.withParent
2525
import androidx.test.espresso.matcher.ViewMatchers.withText
2626
import androidx.test.ext.junit.runners.AndroidJUnit4
2727
import com.google.samples.apps.iosched.R
28+
import com.google.samples.apps.iosched.di.CoroutinesModule
2829
import com.google.samples.apps.iosched.tests.SetPreferencesRule
2930
import com.google.samples.apps.iosched.tests.SyncTaskExecutorRule
31+
import dagger.hilt.android.testing.HiltAndroidRule
32+
import dagger.hilt.android.testing.HiltAndroidTest
33+
import dagger.hilt.android.testing.UninstallModules
3034
import org.hamcrest.CoreMatchers.allOf
3135
import org.hamcrest.CoreMatchers.instanceOf
3236
import org.junit.Rule
3337
import org.junit.Test
3438
import org.junit.runner.RunWith
3539

40+
@HiltAndroidTest
41+
@UninstallModules(CoroutinesModule::class)
3642
@RunWith(AndroidJUnit4::class)
3743
class CodelabTest {
3844

45+
@get:Rule
46+
var hiltRule = HiltAndroidRule(this)
47+
3948
@get:Rule
4049
var activityRule = MainActivityTestRule(R.id.navigation_codelabs)
4150

mobile/src/androidTest/java/com/google/samples/apps/iosched/tests/ui/HomeTest.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,26 @@ import androidx.test.espresso.matcher.ViewMatchers.withParent
2828
import androidx.test.espresso.matcher.ViewMatchers.withText
2929
import androidx.test.ext.junit.runners.AndroidJUnit4
3030
import com.google.samples.apps.iosched.R
31+
import com.google.samples.apps.iosched.di.CoroutinesModule
3132
import com.google.samples.apps.iosched.tests.SetPreferencesRule
3233
import com.google.samples.apps.iosched.tests.SyncTaskExecutorRule
34+
import dagger.hilt.android.testing.HiltAndroidRule
35+
import dagger.hilt.android.testing.HiltAndroidTest
36+
import dagger.hilt.android.testing.UninstallModules
3337
import org.hamcrest.CoreMatchers.allOf
3438
import org.hamcrest.CoreMatchers.instanceOf
3539
import org.junit.Rule
3640
import org.junit.Test
3741
import org.junit.runner.RunWith
3842

43+
@HiltAndroidTest
44+
@UninstallModules(CoroutinesModule::class)
3945
@RunWith(AndroidJUnit4::class)
4046
class HomeTest {
4147

48+
@get:Rule
49+
var hiltRule = HiltAndroidRule(this)
50+
4251
@get:Rule
4352
var activityRule = MainActivityTestRule(R.id.navigation_feed)
4453

mobile/src/androidTest/java/com/google/samples/apps/iosched/tests/ui/InfoTest.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,12 @@ import androidx.test.espresso.matcher.ViewMatchers.withText
2929
import androidx.test.ext.junit.runners.AndroidJUnit4
3030
import com.google.samples.apps.iosched.R
3131
import com.google.samples.apps.iosched.R.id
32+
import com.google.samples.apps.iosched.di.CoroutinesModule
3233
import com.google.samples.apps.iosched.tests.SetPreferencesRule
3334
import com.google.samples.apps.iosched.tests.SyncTaskExecutorRule
35+
import dagger.hilt.android.testing.HiltAndroidRule
36+
import dagger.hilt.android.testing.HiltAndroidTest
37+
import dagger.hilt.android.testing.UninstallModules
3438
import org.hamcrest.CoreMatchers.allOf
3539
import org.hamcrest.CoreMatchers.instanceOf
3640
import org.junit.Rule
@@ -40,9 +44,14 @@ import org.junit.runner.RunWith
4044
/**
4145
* Espresso tests for the Info screen, covering main use case.
4246
*/
47+
@HiltAndroidTest
48+
@UninstallModules(CoroutinesModule::class)
4349
@RunWith(AndroidJUnit4::class)
4450
class InfoTest {
4551

52+
@get:Rule
53+
var hiltRule = HiltAndroidRule(this)
54+
4655
@get:Rule
4756
var activityRule = MainActivityTestRule(R.id.navigation_info)
4857

0 commit comments

Comments
 (0)