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 {