Skip to content

Commit 69523c0

Browse files
android10lrnrzgZhu
authored
Migration from Dagger to Hilt (android10#101)
* Remove Dagger dependencies and add hilt ones. * Compile app but runtime error. * finish the refactor of「hilt」. (android10#109) * finish the refactor of「hilt」. * update the version of「Hilt」and do some migration steps. * remove redundant Annotation. * remove redundant Annotation. * keep the old code style. * upgrade the version of「Hilt」to stable. Co-authored-by: Zhu <zhugang@mshare.cn> Co-authored-by: Zhu <MrZhugang1993@163.com> Co-authored-by: Zhu <zhugang@mshare.cn>
1 parent 6c01a5a commit 69523c0

28 files changed

+101
-276
lines changed

app/build.gradle.kts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ plugins {
44
id(BuildPlugins.kotlinAndroid)
55
id(BuildPlugins.kotlinKapt)
66
id(BuildPlugins.kotlinAndroidExtensions)
7+
id(BuildPlugins.androidHilt)
78

89
// Internal Script plugins
910
id(ScriptPlugins.variants)
@@ -35,9 +36,7 @@ android {
3536
dependencies {
3637
//Compile time dependencies
3738
kapt(Libraries.lifecycleCompiler)
38-
kapt(Libraries.daggerCompiler)
39-
compileOnly(Libraries.javaxAnnotation)
40-
compileOnly(Libraries.javaxInject)
39+
kapt(Libraries.hiltCompiler)
4140

4241
// Application dependencies
4342
implementation(Libraries.kotlinStdLib)
@@ -54,10 +53,13 @@ dependencies {
5453
implementation(Libraries.material)
5554
implementation(Libraries.androidAnnotations)
5655
implementation(Libraries.glide)
57-
implementation(Libraries.dagger)
56+
implementation(Libraries.hilt)
5857
implementation(Libraries.retrofit)
5958
implementation(Libraries.okHttpLoggingInterceptor)
6059

60+
//TODO: change this
61+
implementation ("androidx.fragment:fragment-ktx:1.2.5")
62+
6163
// Unit/Android tests dependencies
6264
testImplementation(TestLibraries.junit4)
6365
testImplementation(TestLibraries.mockk)
@@ -70,7 +72,8 @@ dependencies {
7072
androidTestImplementation(TestLibraries.testExtJunit)
7173
androidTestImplementation(TestLibraries.testRules)
7274
androidTestImplementation(TestLibraries.espressoIntents)
75+
androidTestImplementation(TestLibraries.hiltTesting)
7376

7477
// Development dependencies
7578
debugImplementation(DevLibraries.leakCanary)
76-
}
79+
}

app/src/main/kotlin/com/fernandocejas/sample/AndroidApplication.kt

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,7 @@
1616
package com.fernandocejas.sample
1717

1818
import android.app.Application
19-
import com.fernandocejas.sample.core.di.ApplicationComponent
20-
import com.fernandocejas.sample.core.di.ApplicationModule
21-
import com.fernandocejas.sample.core.di.DaggerApplicationComponent
19+
import dagger.hilt.android.HiltAndroidApp
2220

23-
class AndroidApplication : Application() {
24-
25-
val appComponent: ApplicationComponent by lazy(mode = LazyThreadSafetyMode.NONE) {
26-
DaggerApplicationComponent
27-
.builder()
28-
.applicationModule(ApplicationModule(this))
29-
.build()
30-
}
31-
32-
override fun onCreate() {
33-
super.onCreate()
34-
this.injectMembers()
35-
}
36-
37-
private fun injectMembers() = appComponent.inject(this)
38-
}
21+
@HiltAndroidApp
22+
class AndroidApplication : Application()

app/src/main/kotlin/com/fernandocejas/sample/core/di/ApplicationComponent.kt

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

app/src/main/kotlin/com/fernandocejas/sample/core/di/ApplicationModule.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,21 @@
1515
*/
1616
package com.fernandocejas.sample.core.di
1717

18-
import android.content.Context
19-
import com.fernandocejas.sample.AndroidApplication
2018
import com.fernandocejas.sample.BuildConfig
2119
import com.fernandocejas.sample.features.movies.MoviesRepository
2220
import dagger.Module
2321
import dagger.Provides
22+
import dagger.hilt.InstallIn
23+
import dagger.hilt.components.SingletonComponent
2424
import okhttp3.OkHttpClient
2525
import okhttp3.logging.HttpLoggingInterceptor
2626
import retrofit2.Retrofit
2727
import retrofit2.converter.gson.GsonConverterFactory
2828
import javax.inject.Singleton
2929

3030
@Module
31-
class ApplicationModule(private val application: AndroidApplication) {
32-
33-
@Provides @Singleton fun provideApplicationContext(): Context = application
31+
@InstallIn(SingletonComponent::class)
32+
class ApplicationModule {
3433

3534
@Provides @Singleton fun provideRetrofit(): Retrofit {
3635
return Retrofit.Builder()

app/src/main/kotlin/com/fernandocejas/sample/core/di/viewmodel/ViewModelFactory.kt

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

app/src/main/kotlin/com/fernandocejas/sample/core/di/viewmodel/ViewModelKey.kt

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

app/src/main/kotlin/com/fernandocejas/sample/core/di/viewmodel/ViewModelModule.kt

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

app/src/main/kotlin/com/fernandocejas/sample/core/extension/Fragment.kt

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,17 @@ package com.fernandocejas.sample.core.extension
1717

1818
import android.content.Context
1919
import android.view.View
20-
import androidx.fragment.app.Fragment
2120
import androidx.fragment.app.FragmentManager
2221
import androidx.fragment.app.FragmentTransaction
23-
import androidx.lifecycle.ViewModel
24-
import androidx.lifecycle.ViewModelProvider
25-
import androidx.lifecycle.ViewModelProviders
2622
import com.fernandocejas.sample.core.platform.BaseActivity
2723
import com.fernandocejas.sample.core.platform.BaseFragment
28-
import kotlinx.android.synthetic.main.activity_layout.fragmentContainer
24+
import kotlinx.android.synthetic.main.activity_layout.*
2925

3026
inline fun FragmentManager.inTransaction(func: FragmentTransaction.() -> FragmentTransaction) =
3127
beginTransaction().func().commit()
3228

33-
inline fun <reified T : ViewModel> Fragment.viewModel(factory: ViewModelProvider.Factory, body: T.() -> Unit): T {
34-
val vm = ViewModelProviders.of(this, factory)[T::class.java]
35-
vm.body()
36-
return vm
37-
}
38-
3929
fun BaseFragment.close() = fragmentManager?.popBackStack()
4030

4131
val BaseFragment.viewContainer: View get() = (activity as BaseActivity).fragmentContainer
4232

43-
val BaseFragment.appContext: Context get() = activity?.applicationContext!!
33+
val BaseFragment.appContext: Context get() = activity?.applicationContext!!

app/src/main/kotlin/com/fernandocejas/sample/core/navigation/RouteActivity.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,16 @@ package com.fernandocejas.sample.core.navigation
1717

1818
import android.os.Bundle
1919
import androidx.appcompat.app.AppCompatActivity
20-
import com.fernandocejas.sample.AndroidApplication
21-
import com.fernandocejas.sample.core.di.ApplicationComponent
20+
import dagger.hilt.android.AndroidEntryPoint
2221
import javax.inject.Inject
2322

23+
@AndroidEntryPoint
2424
class RouteActivity : AppCompatActivity() {
2525

26-
private val appComponent: ApplicationComponent by lazy(mode = LazyThreadSafetyMode.NONE) {
27-
(application as AndroidApplication).appComponent
28-
}
29-
3026
@Inject internal lateinit var navigator: Navigator
3127

3228
override fun onCreate(savedInstanceState: Bundle?) {
3329
super.onCreate(savedInstanceState)
34-
appComponent.inject(this)
3530
navigator.showMain(this)
3631
}
3732
}

app/src/main/kotlin/com/fernandocejas/sample/core/platform/BaseActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import android.os.Bundle
1919
import androidx.appcompat.app.AppCompatActivity
2020
import com.fernandocejas.sample.R
2121
import com.fernandocejas.sample.core.extension.inTransaction
22+
import dagger.hilt.android.AndroidEntryPoint
2223
import kotlinx.android.synthetic.main.toolbar.*
2324

2425
/**
@@ -27,6 +28,7 @@ import kotlinx.android.synthetic.main.toolbar.*
2728
*
2829
* @see AppCompatActivity
2930
*/
31+
@AndroidEntryPoint
3032
abstract class BaseActivity : AppCompatActivity() {
3133

3234
override fun onCreate(savedInstanceState: Bundle?) {

0 commit comments

Comments
 (0)