Skip to content

Commit afd21b7

Browse files
authored
Merge pull request #51 from hrodrick/feature/update-project
Update Kotlin, Hilt, and all the dependencies. Fix upgrading issues
2 parents f0b6e77 + 9242d49 commit afd21b7

File tree

14 files changed

+94
-69
lines changed

14 files changed

+94
-69
lines changed

.idea/gradle.xml

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

Lines changed: 52 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,33 @@ apply plugin: 'kotlin-android'
44

55
apply plugin: 'kotlin-kapt'
66

7-
apply plugin: 'kotlin-android-extensions'
8-
97
apply plugin: 'dagger.hilt.android.plugin'
108

119
apply plugin: 'com.google.gms.google-services'
1210

1311
apply plugin: 'com.google.firebase.crashlytics'
1412

1513
android {
16-
compileSdkVersion 29
17-
dataBinding.enabled = true
14+
compileSdkVersion 31
1815
defaultConfig {
1916
applicationId "com.rootstrap.android"
2017
minSdkVersion 23
21-
targetSdkVersion 29
18+
targetSdkVersion 31
2219
versionCode 42
2320
versionName "1.0"
2421
testInstrumentationRunner 'com.rootstrap.android.CustomTestRunner'
2522
}
2623

27-
viewBinding {
28-
enabled = true
29-
}
30-
3124
compileOptions {
3225
sourceCompatibility JavaVersion.VERSION_1_8
3326
targetCompatibility JavaVersion.VERSION_1_8
3427
}
3528

29+
buildFeatures {
30+
viewBinding true
31+
dataBinding true
32+
}
33+
3634
kotlinOptions {
3735
jvmTarget = '1.8'
3836
}
@@ -58,6 +56,10 @@ android {
5856
}
5957
}
6058

59+
kapt {
60+
correctErrorTypes true
61+
}
62+
6163
flavorDimensions "server"
6264

6365
productFlavors {
@@ -137,63 +139,74 @@ android {
137139
}
138140

139141
dependencies {
142+
def room_version = "2.3.0"
143+
def lifecycle_version = "2.4.0"
144+
140145
implementation fileTree(include: ['*.jar'], dir: 'libs')
141-
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
142-
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1'
143-
implementation 'androidx.appcompat:appcompat:1.2.0'
144-
implementation 'androidx.core:core-ktx:1.3.2'
145-
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
146+
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0'
147+
implementation 'androidx.appcompat:appcompat:1.3.1'
148+
implementation 'androidx.core:core-ktx:1.7.0'
149+
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
146150
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
147151
implementation "androidx.preference:preference-ktx:1.1.1"
148-
implementation 'com.google.android.material:material:1.2.1'
152+
implementation 'com.google.android.material:material:1.4.0'
149153
testImplementation 'junit:junit:4.13.1'
150154
testImplementation 'org.mockito:mockito-core:2.28.2'
151-
androidTestImplementation 'androidx.test:runner:1.3.0'
152-
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
153-
androidTestImplementation 'androidx.test.espresso:espresso-intents:3.3.0'
154-
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
155+
androidTestImplementation 'androidx.test:runner:1.4.0'
156+
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
157+
androidTestImplementation 'androidx.test.espresso:espresso-intents:3.4.0'
158+
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
155159
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
156-
androidTestImplementation 'androidx.test:rules:1.3.0'
160+
androidTestImplementation 'androidx.test:rules:1.4.0'
157161
androidTestImplementation 'com.squareup.okhttp3:mockwebserver:4.3.1'
158-
//---- ANDROID ARCH ROOM ----
159-
implementation 'android.arch.persistence.room:runtime:1.1.1'
160-
kapt "android.arch.persistence.room:compiler:1.1.1"
161-
//---- ANDROID ARCH LIFECYCLE ----
162-
implementation 'android.arch.lifecycle:common-java8:1.1.1'
163-
kapt "android.arch.lifecycle:compiler:1.1.1"
164-
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"
165-
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"
162+
163+
//---- ROOM ----
164+
implementation "androidx.room:room-runtime:$room_version"
165+
kapt "androidx.room:room-compiler:$room_version"
166+
// Kotlin Extensions and Coroutines support for Room
167+
implementation "androidx.room:room-ktx:$room_version"
168+
169+
//---- LIFECYCLE ----]
170+
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
171+
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
166172
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
167-
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
173+
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
174+
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
168175

169176
//---- GOOGLE JSON SERIALIZER/DESERIALIZER ----
170177
implementation 'com.google.code.gson:gson:2.8.6'
178+
171179
//---- MixPanel ----
172180
implementation 'com.mixpanel.android:mixpanel-android:5.6.1'
181+
173182
//---- Firebase ----
174-
implementation platform('com.google.firebase:firebase-bom:26.1.0')
175-
implementation 'com.google.firebase:firebase-core:18.0.2'
183+
implementation platform('com.google.firebase:firebase-bom:28.4.2')
184+
implementation 'com.google.firebase:firebase-core:20.0.0'
176185
implementation 'com.google.firebase:firebase-analytics-ktx'
177186
implementation 'com.google.firebase:firebase-crashlytics-ktx'
178-
implementation 'org.jetbrains.kotlin:kotlin-reflect:1.4.10'
187+
implementation 'org.jetbrains.kotlin:kotlin-reflect:1.5.31'
188+
179189
//---- Image ----
180190
implementation group: 'com.github.bumptech.glide', name: 'glide', version: '4.10.0'
191+
181192
//---- Network ----
182193
implementation 'com.squareup.retrofit2:retrofit:2.6.2'
183-
implementation 'com.squareup.moshi:moshi-kotlin:1.9.2'
194+
implementation 'com.squareup.moshi:moshi-kotlin:1.12.0'
184195
implementation 'com.squareup.retrofit2:converter-moshi:2.5.0'
185196
implementation 'com.squareup.okhttp3:logging-interceptor:4.3.1'
197+
186198
//---- Events ----
187199
implementation 'com.squareup:otto:1.3.8'
200+
188201
//---- Linters ----
189202
ktlint "com.pinterest:ktlint:0.35.0"
203+
190204
//---- Hilt ----
191-
implementation "com.google.dagger:hilt-android:2.28-alpha"
192-
implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha02'
193-
kapt "com.google.dagger:hilt-android-compiler:2.28-alpha"
194-
kapt 'androidx.hilt:hilt-compiler:1.0.0-alpha02'
195-
androidTestImplementation 'com.google.dagger:hilt-android-testing:2.28-alpha'
196-
kaptAndroidTest 'com.google.dagger:hilt-android-compiler:2.28-alpha'
205+
implementation "com.google.dagger:hilt-android:$hilt_version"
206+
kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
207+
kapt 'androidx.hilt:hilt-compiler:1.0.0'
208+
androidTestImplementation "com.google.dagger:hilt-android-testing:$hilt_version"
209+
kaptAndroidTest "com.google.dagger:hilt-android-compiler:$hilt_version"
197210

198211
//security crypto
199212
implementation "androidx.security:security-crypto:1.1.0-alpha03"

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717

1818
<activity
1919
android:name=".ui.activity.main.SignUpActivity"
20-
android:screenOrientation="portrait">
20+
android:screenOrientation="portrait"
21+
android:exported="true">
2122
<intent-filter>
2223
<action android:name="android.intent.action.MAIN" />
2324
<category android:name="android.intent.category.LAUNCHER" />

app/src/main/java/com/rootstrap/android/network/managers/ManagerModule.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import com.rootstrap.android.network.managers.user.UserManagerImpl
77
import dagger.Binds
88
import dagger.Module
99
import dagger.hilt.InstallIn
10-
import dagger.hilt.android.components.ApplicationComponent
10+
import dagger.hilt.components.SingletonComponent
1111
import javax.inject.Singleton
1212

1313
@Module
14-
@InstallIn(ApplicationComponent::class)
14+
@InstallIn(SingletonComponent::class)
1515
abstract class ManagerModule {
1616

1717
@Binds

app/src/main/java/com/rootstrap/android/network/providers/ServiceProviderModule.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ import com.squareup.moshi.Moshi
88
import dagger.Module
99
import dagger.Provides
1010
import dagger.hilt.InstallIn
11-
import dagger.hilt.android.components.ApplicationComponent
1211
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
12+
import dagger.hilt.components.SingletonComponent
1313
import okhttp3.OkHttpClient
1414
import okhttp3.logging.HttpLoggingInterceptor
1515
import retrofit2.Retrofit
1616
import retrofit2.converter.moshi.MoshiConverterFactory
1717
import javax.inject.Singleton
1818

1919
@Module
20-
@InstallIn(ApplicationComponent::class)
20+
@InstallIn(SingletonComponent::class)
2121
class ServiceProviderModule {
2222

2323
@Provides

app/src/main/java/com/rootstrap/android/network/services/ApiModule.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ package com.rootstrap.android.network.services
33
import dagger.Module
44
import dagger.Provides
55
import dagger.hilt.InstallIn
6-
import dagger.hilt.android.components.ApplicationComponent
6+
import dagger.hilt.components.SingletonComponent
77
import retrofit2.Retrofit
88

99
@Module
10-
@InstallIn(ApplicationComponent::class)
10+
@InstallIn(SingletonComponent::class)
1111
class ApiModule {
1212

1313
@Provides

app/src/main/java/com/rootstrap/android/ui/activity/main/ProfileActivity.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.os.Bundle
44
import androidx.activity.viewModels
55
import androidx.lifecycle.Observer
66
import com.rootstrap.android.R
7+
import com.rootstrap.android.databinding.ActivityProfileBinding
78
import com.rootstrap.android.metrics.Analytics
89
import com.rootstrap.android.metrics.PageEvents
910
import com.rootstrap.android.metrics.VISIT_PROFILE
@@ -12,7 +13,6 @@ import com.rootstrap.android.ui.base.BaseActivity
1213
import com.rootstrap.android.ui.view.ProfileView
1314
import com.rootstrap.android.util.NetworkState
1415
import dagger.hilt.android.AndroidEntryPoint
15-
import kotlinx.android.synthetic.main.activity_profile.*
1616
import javax.inject.Inject
1717

1818
@AndroidEntryPoint
@@ -21,15 +21,18 @@ class ProfileActivity : BaseActivity(), ProfileView {
2121
@Inject lateinit var sessionManager: SessionManager
2222

2323
private val viewModel: ProfileActivityViewModel by viewModels()
24+
private val binding by lazy { ActivityProfileBinding.inflate(layoutInflater) }
2425

2526
override fun onCreate(savedInstanceState: Bundle?) {
2627
super.onCreate(savedInstanceState)
27-
setContentView(R.layout.activity_profile)
2828

2929
Analytics.track(PageEvents.visit(VISIT_PROFILE))
3030

31-
welcome_text_view.text = getString(R.string.welcome_message, sessionManager.user?.firstName)
32-
sign_out_button.setOnClickListener { viewModel.signOut() }
31+
with(binding) {
32+
setContentView(root)
33+
welcomeTextView.text = getString(R.string.welcome_message, sessionManager.user?.firstName)
34+
signOutButton.setOnClickListener { viewModel.signOut() }
35+
}
3336

3437
lifecycle.addObserver(viewModel)
3538
setObservers()

app/src/main/java/com/rootstrap/android/ui/activity/main/ProfileActivityViewModel.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.rootstrap.android.ui.activity.main
22

3-
import androidx.hilt.lifecycle.ViewModelInject
43
import androidx.lifecycle.LiveData
54
import androidx.lifecycle.MutableLiveData
65
import androidx.lifecycle.viewModelScope
@@ -10,9 +9,12 @@ import com.rootstrap.android.ui.base.BaseViewModel
109
import com.rootstrap.android.util.NetworkState
1110
import com.rootstrap.android.util.extensions.ApiErrorType
1211
import com.rootstrap.android.util.extensions.ApiException
12+
import dagger.hilt.android.lifecycle.HiltViewModel
1313
import kotlinx.coroutines.launch
14+
import javax.inject.Inject
1415

15-
open class ProfileActivityViewModel @ViewModelInject constructor(
16+
@HiltViewModel
17+
open class ProfileActivityViewModel @Inject constructor(
1618
private val sessionManager: SessionManager,
1719
private val userManager: UserManager
1820
) : BaseViewModel() {

app/src/main/java/com/rootstrap/android/ui/activity/main/SignInActivity.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,12 @@ import dagger.hilt.android.AndroidEntryPoint
2121
class SignInActivity : PermissionActivity(), AuthView {
2222

2323
private val viewModel: SignInActivityViewModel by viewModels()
24-
private lateinit var binding: ActivitySignInBinding
24+
private val binding: ActivitySignInBinding by lazy {
25+
ActivitySignInBinding.inflate(layoutInflater)
26+
}
2527

2628
override fun onCreate(savedInstanceState: Bundle?) {
2729
super.onCreate(savedInstanceState)
28-
binding = ActivitySignInBinding.inflate(layoutInflater)
2930

3031
setContentView(binding.root)
3132
Analytics.track(PageEvents.visit(VISIT_SIGN_IN))

app/src/main/java/com/rootstrap/android/ui/activity/main/SignInActivityViewModel.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.rootstrap.android.ui.activity.main
22

3-
import androidx.hilt.lifecycle.ViewModelInject
43
import androidx.lifecycle.LiveData
54
import androidx.lifecycle.MutableLiveData
65
import androidx.lifecycle.viewModelScope
@@ -11,9 +10,12 @@ import com.rootstrap.android.ui.base.BaseViewModel
1110
import com.rootstrap.android.util.NetworkState
1211
import com.rootstrap.android.util.extensions.ApiErrorType
1312
import com.rootstrap.android.util.extensions.ApiException
13+
import dagger.hilt.android.lifecycle.HiltViewModel
1414
import kotlinx.coroutines.launch
15+
import javax.inject.Inject
1516

16-
open class SignInActivityViewModel @ViewModelInject constructor(
17+
@HiltViewModel
18+
open class SignInActivityViewModel @Inject constructor(
1719
private val sessionManager: SessionManager,
1820
private val userManager: UserManager
1921
) : BaseViewModel() {

0 commit comments

Comments
 (0)