diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index c0586d1b..c76fa1e4 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -67,9 +67,11 @@ dependencies {
implementation(deps.coroutines.android)
implementation(deps.koin.android)
implementation(deps.androidx.material)
+ implementation(deps.androidx.startup)
debugImplementation(deps.squareup.leakCanary)
implementation(deps.timber)
+ implementation(deps.viewBindingDelegate)
testImplementation(deps.test.junit)
androidTestImplementation(deps.test.androidx.junit)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2198a87a..9b4ee9ff 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -13,6 +14,20 @@
android:supportsRtl="true"
android:theme="@style/AppTheme">
+
+
+
+
+
+
diff --git a/app/src/main/java/com/hoc/flowmvi/App.kt b/app/src/main/java/com/hoc/flowmvi/App.kt
index 8476125e..6f8ba856 100644
--- a/app/src/main/java/com/hoc/flowmvi/App.kt
+++ b/app/src/main/java/com/hoc/flowmvi/App.kt
@@ -15,7 +15,6 @@ import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidLogger
import org.koin.core.context.startKoin
import org.koin.core.logger.Level
-import timber.log.Timber
@FlowPreview
@ExperimentalCoroutinesApi
@@ -42,12 +41,6 @@ class App : Application() {
DynamicColors.applyToActivitiesIfAvailable(this)
- if (BuildConfig.DEBUG) {
- Timber.plant(Timber.DebugTree())
- } else {
- // TODO(Timber): plant release tree
- }
-
startKoin {
androidContext(this@App)
diff --git a/app/src/main/java/com/hoc/flowmvi/initializer/TimberInitializer.kt b/app/src/main/java/com/hoc/flowmvi/initializer/TimberInitializer.kt
new file mode 100644
index 00000000..aa6666e9
--- /dev/null
+++ b/app/src/main/java/com/hoc/flowmvi/initializer/TimberInitializer.kt
@@ -0,0 +1,21 @@
+@file:Suppress("unused")
+
+package com.hoc.flowmvi.initializer
+
+import android.content.Context
+import androidx.startup.Initializer
+import com.hoc.flowmvi.BuildConfig
+import timber.log.Timber
+
+class TimberInitializer : Initializer {
+ override fun create(context: Context) {
+ if (BuildConfig.DEBUG) {
+ Timber.plant(Timber.DebugTree())
+ } else {
+ // TODO(Timber): plant release tree
+ }
+ Timber.d("TimberInitializer...")
+ }
+
+ override fun dependencies(): List>> = emptyList()
+}
diff --git a/app/src/main/java/com/hoc/flowmvi/initializer/ViewBindingInitializer.kt b/app/src/main/java/com/hoc/flowmvi/initializer/ViewBindingInitializer.kt
new file mode 100644
index 00000000..ea58b77e
--- /dev/null
+++ b/app/src/main/java/com/hoc/flowmvi/initializer/ViewBindingInitializer.kt
@@ -0,0 +1,23 @@
+@file:Suppress("unused")
+
+package com.hoc.flowmvi.initializer
+
+import android.content.Context
+import androidx.startup.Initializer
+import com.hoc.flowmvi.ui.add.databinding.ActivityAddBinding
+import com.hoc.flowmvi.ui.main.databinding.ActivityMainBinding
+import com.hoc081098.viewbindingdelegate.preloadBindMethods
+import timber.log.Timber
+
+class ViewBindingInitializer : Initializer {
+ override fun create(context: Context) {
+ preloadBindMethods(
+ ActivityMainBinding::class,
+ ActivityAddBinding::class,
+ )
+ Timber.d("ViewBindingInitializer...")
+ }
+
+ override fun dependencies(): List>> =
+ listOf(TimberInitializer::class.java)
+}
diff --git a/buildSrc/src/main/kotlin/deps.kt b/buildSrc/src/main/kotlin/deps.kt
index e4ce0885..9b1e4a3c 100644
--- a/buildSrc/src/main/kotlin/deps.kt
+++ b/buildSrc/src/main/kotlin/deps.kt
@@ -33,6 +33,7 @@ object deps {
const val recyclerView = "androidx.recyclerview:recyclerview:1.2.1"
const val swipeRefreshLayout = "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01"
const val material = "com.google.android.material:material:1.6.1"
+ const val startup = "androidx.startup:startup-runtime:1.1.1"
}
object lifecycle {
@@ -69,8 +70,8 @@ object deps {
}
const val coil = "io.coil-kt:coil:2.1.0"
- const val viewBindingDelegate = "com.github.hoc081098:ViewBindingDelegate:1.3.1"
- const val flowExt = "io.github.hoc081098:FlowExt:0.4.0"
+ const val viewBindingDelegate = "com.github.hoc081098:ViewBindingDelegate:1.4.0"
+ const val flowExt = "io.github.hoc081098:FlowExt:0.5.0-SNAPSHOT"
const val timber = "com.jakewharton.timber:timber:5.0.1"
object arrow {