From 2dd57c719216272eef70936d1ca193cd14aa30c2 Mon Sep 17 00:00:00 2001 From: b1urrrr <20190993@sungshin.ac.kr> Date: Fri, 16 Aug 2024 00:16:36 +0900 Subject: [PATCH 1/5] =?UTF-8?q?[FEAT/#466]=20=EC=9D=B8=EC=95=B1=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=EC=9E=90=EC=B2=B4=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/el/yello/di/AppModule.kt | 7 +- .../presentation/splash/SplashActivity.kt | 137 ++++++++---------- .../presentation/splash/SplashViewModel.kt | 31 ++++ app/src/main/res/values/strings.xml | 4 + gradle/libs.versions.toml | 4 +- 5 files changed, 106 insertions(+), 77 deletions(-) diff --git a/app/src/main/java/com/el/yello/di/AppModule.kt b/app/src/main/java/com/el/yello/di/AppModule.kt index 9768d9204..ca3883698 100644 --- a/app/src/main/java/com/el/yello/di/AppModule.kt +++ b/app/src/main/java/com/el/yello/di/AppModule.kt @@ -2,8 +2,9 @@ package com.el.yello.di import android.app.Application import android.content.Context -import com.example.data.util.FileParser import com.el.yello.presentation.main.ResolutionMetrics +import com.example.data.util.FileParser +import com.google.firebase.database.FirebaseDatabase import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -29,4 +30,8 @@ object AppModule { @Singleton fun provideResolutionMetrics(@ApplicationContext context: Application) = ResolutionMetrics(context) + + @Provides + @Singleton + fun provideDatabaseReference() = FirebaseDatabase.getInstance().reference } diff --git a/app/src/main/java/com/el/yello/presentation/splash/SplashActivity.kt b/app/src/main/java/com/el/yello/presentation/splash/SplashActivity.kt index ffcbfc01f..7b7ec3421 100644 --- a/app/src/main/java/com/el/yello/presentation/splash/SplashActivity.kt +++ b/app/src/main/java/com/el/yello/presentation/splash/SplashActivity.kt @@ -1,15 +1,15 @@ package com.el.yello.presentation.splash -import android.content.DialogInterface import android.content.Intent +import android.net.Uri import android.os.Bundle import android.os.Handler import android.os.Looper -import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels import androidx.appcompat.app.AlertDialog import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen -import com.el.yello.BuildConfig +import androidx.lifecycle.flowWithLifecycle +import androidx.lifecycle.lifecycleScope import com.el.yello.R import com.el.yello.databinding.ActivitySplashBinding import com.el.yello.presentation.auth.SignInActivity @@ -17,67 +17,76 @@ import com.el.yello.presentation.main.MainActivity import com.el.yello.util.extension.yelloSnackbar import com.el.yello.util.manager.NetworkManager import com.example.ui.base.BindingActivity -import com.example.ui.extension.toast -import com.google.android.play.core.appupdate.AppUpdateInfo -import com.google.android.play.core.appupdate.AppUpdateManagerFactory -import com.google.android.play.core.appupdate.AppUpdateOptions -import com.google.android.play.core.install.model.AppUpdateType.IMMEDIATE -import com.google.android.play.core.install.model.UpdateAvailability +import com.example.ui.state.UiState import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach import timber.log.Timber + @AndroidEntryPoint class SplashActivity : BindingActivity(R.layout.activity_splash) { private val viewModel by viewModels() - private val appUpdateManager by lazy { AppUpdateManagerFactory.create(this) } - override fun onCreate(savedInstanceState: Bundle?) { installSplashScreen() super.onCreate(savedInstanceState) + initView() + } + + private fun initView() { showExtraToastMsg() - initAppUpdate() + checkNetworkUpdateState() } private fun showExtraToastMsg() { yelloSnackbar(binding.root, intent.getStringExtra(EXTRA_TOAST_MSG) ?: return) } - private fun initAppUpdate() { + private fun checkNetworkUpdateState() { if (NetworkManager.checkNetworkState(this)) { - if (BuildConfig.DEBUG) { - initSplash() - } else { - val appUpdateInfoTask = appUpdateManager.appUpdateInfo - appUpdateInfoTask.addOnSuccessListener { appUpdateInfo -> - if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE) { - appUpdateInfo.isUpdateTypeAllowed(IMMEDIATE) - requestUpdate(appUpdateInfo) - } else { - initSplash() - } - }.addOnFailureListener { - initSplash() - } - } + observeIsLatestVersion() } else { AlertDialog.Builder(this) - .setTitle("안내") - .setMessage("인터넷 연결을 확인해주세요.") + .setTitle(getString(R.string.splash_guide)) + .setMessage(getString(R.string.splash_network_description)) .setCancelable(false) - .setPositiveButton( - "확인", - DialogInterface.OnClickListener { dialog, _ -> - finishAffinity() - }, - ) + .setPositiveButton(getString(R.string.splash_confirm)) { _, _ -> + finishAffinity() + } .create() .show() } } - private fun initSplash() { + private fun observeIsLatestVersion() { + viewModel.isLatestVersion.flowWithLifecycle(lifecycle) + .onEach { state -> + when (state) { + is UiState.Empty, is UiState.Loading -> { + return@onEach + } + + is UiState.Success -> { + val isLatestVersion = state.data + + if (isLatestVersion) { + initSplashView() + } else { + showInAppUpdateDialog() + } + } + + is UiState.Failure -> { + // TODO : 인앱 업데이트 필요 여부 조회 실패 시 UI 처리 + Timber.e(state.msg) + } + } + }.launchIn(lifecycleScope) + } + + private fun initSplashView() { Handler(Looper.getMainLooper()).postDelayed({ if (viewModel.getIsAutoLogin()) { navigateToMainScreen() @@ -87,20 +96,6 @@ class SplashActivity : BindingActivity(R.layout.activity_ }, 3000) } - private fun requestUpdate(appUpdateInfo: AppUpdateInfo) { - runCatching { - appUpdateManager.startUpdateFlowForResult( - appUpdateInfo, - activityResultLauncher, - AppUpdateOptions.newBuilder(IMMEDIATE) - .setAllowAssetPackDeletion(true) - .build(), - ) - }.onFailure { - Timber.e(it) - } - } - private fun navigateToMainScreen() { var type: String? = "" var path: String? = "" @@ -123,36 +118,30 @@ class SplashActivity : BindingActivity(R.layout.activity_ finish() } - private val activityResultLauncher = - registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) { - if (it.resultCode != RESULT_OK) { - toast(getString(R.string.splash_update_error)) - finishAffinity() + private fun showInAppUpdateDialog() { + AlertDialog.Builder(this) + .setTitle(getString(R.string.splash_guide)) + .setMessage(getString(R.string.slash_update_description)) + .setCancelable(false) + .setPositiveButton(getString(R.string.splash_confirm)) { _, _ -> + navigateToMarket() } - } + .create() + .show() + } + + private fun navigateToMarket() { + val uri = Uri.parse(URI_MARKET + packageName) + startActivity(Intent(Intent.ACTION_VIEW, uri)) + } override fun onResume() { super.onResume() - - if (!BuildConfig.DEBUG) { - appUpdateManager.appUpdateInfo.addOnSuccessListener { appUpdateInfo -> - if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) { - runCatching { - appUpdateManager.startUpdateFlowForResult( - appUpdateInfo, - activityResultLauncher, - AppUpdateOptions.newBuilder(IMMEDIATE) - .build(), - ) - }.onFailure { - Timber.e(it) - } - } - } - } + viewModel.checkLatestUpdate() } companion object { private const val EXTRA_TOAST_MSG = "TOAST_MSG" + private const val URI_MARKET = "market://details?id=" } } diff --git a/app/src/main/java/com/el/yello/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/el/yello/presentation/splash/SplashViewModel.kt index a0fe59a45..819d9bc84 100644 --- a/app/src/main/java/com/el/yello/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/el/yello/presentation/splash/SplashViewModel.kt @@ -1,13 +1,44 @@ package com.el.yello.presentation.splash import androidx.lifecycle.ViewModel +import com.el.yello.BuildConfig.VERSION_NAME import com.example.domain.repository.AuthRepository +import com.example.ui.state.UiState +import com.google.firebase.database.DatabaseReference import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow import javax.inject.Inject @HiltViewModel class SplashViewModel @Inject constructor( private val authRepository: AuthRepository, + private val firebaseDatabase: DatabaseReference, ) : ViewModel() { + private val _isLatestVersion = MutableStateFlow>(UiState.Empty) + val isLatestVersion get() = _isLatestVersion.asStateFlow() + + init { + checkLatestUpdate() + } + fun getIsAutoLogin(): Boolean = authRepository.getAutoLogin() + + fun checkLatestUpdate() { + firebaseDatabase.child(PATH_REALTIME_VERSION).get() + .addOnSuccessListener { snapshot -> + val updateVersion = snapshot.value.toString().toFloat() + val currentVersion = VERSION_NAME.toFloat() + + val isLatestVersion = currentVersion < updateVersion + _isLatestVersion.value = UiState.Success(isLatestVersion) + } + .addOnFailureListener { e -> + _isLatestVersion.value = UiState.Failure(e.toString()) + } + } + + companion object { + private const val PATH_REALTIME_VERSION = "version" + } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9ac2b1b74..c09241cc0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -12,6 +12,10 @@ Billing Manager is not initialized 지금 누군가 당신을 생각하고 있어요! + 안내 + 이 앱을 사용하려면 최신 버전을 다운로드하세요. + 확인 + 인터넷 연결을 확인해주세요. Yell:o에 오신 걸 환영해요! 가입을 시작해볼까요? diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fb637728f..177b666a6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -158,6 +158,7 @@ firebase-messaging = { group = "com.google.firebase", name = "firebase-messaging firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics-ktx"} firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics-ktx"} firebase-remoteConfig = { group = "com.google.firebase", name = "firebase-config-ktx"} +firebase-database = { group = "com.google.firebase", name = "firebase-database" } ## Compose compose-activity = { group = "androidx.activity", name = "activity-compose", version.ref = "composeActivityVersion" } @@ -182,7 +183,6 @@ compose-bom-ui-test = {group = "androidx.compose.ui", name = "ui-test-junit4"} compose-bom-debug-ui-test-manifest = {group = "androidx.compose.ui", name="ui-test-manifest"} compose-runtime = {group = "androidx.compose.runtime", name="runtime"} - ## Test jUnit = { group = "junit", name = "junit", version.ref = "junitVersion" } androidTest = { group = "androidx.test.ext", name = "junit", version.ref = "androidTestVersion" } @@ -258,6 +258,6 @@ appModuleLibraryEtc = [ ] okhttp = ["okhttp", "okhttp-logging-interceptor"] -firebase = ["firebase-analytics", "firebase-crashlytics", "firebase-messaging", "firebase-remoteConfig"] +firebase = ["firebase-analytics", "firebase-crashlytics", "firebase-messaging", "firebase-remoteConfig", "firebase-database"] flipper = ["flipper", "soloader", "flipper-network", "flipper-leakcanary"] retrofit = ["retrofit", "retrofit-json-converter"] \ No newline at end of file From 87ac0281557107c61bd666411c1e55b2e0d1417f Mon Sep 17 00:00:00 2001 From: b1urrrr <20190993@sungshin.ac.kr> Date: Fri, 16 Aug 2024 00:48:25 +0900 Subject: [PATCH 2/5] =?UTF-8?q?[MOD/#466]=20=EC=9D=B8=EC=95=B1=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=EB=94=94=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EB=AA=A8=EB=93=9C=20=EB=B6=84=EA=B8=B0=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EB=B0=8F=20=EC=A1=B0=EA=B1=B4=EB=AC=B8=20=EC=A0=95=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/splash/SplashActivity.kt | 19 +++++++++++++++++-- .../presentation/splash/SplashViewModel.kt | 6 +----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/el/yello/presentation/splash/SplashActivity.kt b/app/src/main/java/com/el/yello/presentation/splash/SplashActivity.kt index 7b7ec3421..b06e61d25 100644 --- a/app/src/main/java/com/el/yello/presentation/splash/SplashActivity.kt +++ b/app/src/main/java/com/el/yello/presentation/splash/SplashActivity.kt @@ -10,6 +10,7 @@ import androidx.appcompat.app.AlertDialog import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.lifecycle.flowWithLifecycle import androidx.lifecycle.lifecycleScope +import com.el.yello.BuildConfig.DEBUG import com.el.yello.R import com.el.yello.databinding.ActivitySplashBinding import com.el.yello.presentation.auth.SignInActivity @@ -33,6 +34,7 @@ class SplashActivity : BindingActivity(R.layout.activity_ super.onCreate(savedInstanceState) initView() + initObserver() } private fun initView() { @@ -46,7 +48,11 @@ class SplashActivity : BindingActivity(R.layout.activity_ private fun checkNetworkUpdateState() { if (NetworkManager.checkNetworkState(this)) { - observeIsLatestVersion() + if (DEBUG) { + initSplashView() + } else { + viewModel.checkLatestUpdate() + } } else { AlertDialog.Builder(this) .setTitle(getString(R.string.splash_guide)) @@ -60,6 +66,10 @@ class SplashActivity : BindingActivity(R.layout.activity_ } } + private fun initObserver() { + observeIsLatestVersion() + } + private fun observeIsLatestVersion() { viewModel.isLatestVersion.flowWithLifecycle(lifecycle) .onEach { state -> @@ -137,7 +147,12 @@ class SplashActivity : BindingActivity(R.layout.activity_ override fun onResume() { super.onResume() - viewModel.checkLatestUpdate() + + if (DEBUG) { + initSplashView() + } else { + viewModel.checkLatestUpdate() + } } companion object { diff --git a/app/src/main/java/com/el/yello/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/el/yello/presentation/splash/SplashViewModel.kt index 819d9bc84..e4ab276b8 100644 --- a/app/src/main/java/com/el/yello/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/el/yello/presentation/splash/SplashViewModel.kt @@ -18,10 +18,6 @@ class SplashViewModel @Inject constructor( private val _isLatestVersion = MutableStateFlow>(UiState.Empty) val isLatestVersion get() = _isLatestVersion.asStateFlow() - init { - checkLatestUpdate() - } - fun getIsAutoLogin(): Boolean = authRepository.getAutoLogin() fun checkLatestUpdate() { @@ -30,7 +26,7 @@ class SplashViewModel @Inject constructor( val updateVersion = snapshot.value.toString().toFloat() val currentVersion = VERSION_NAME.toFloat() - val isLatestVersion = currentVersion < updateVersion + val isLatestVersion = currentVersion >= updateVersion _isLatestVersion.value = UiState.Success(isLatestVersion) } .addOnFailureListener { e -> From 176302708c2532eb4b3b362797496928d0a35a26 Mon Sep 17 00:00:00 2001 From: b1urrrr <20190993@sungshin.ac.kr> Date: Fri, 16 Aug 2024 00:57:01 +0900 Subject: [PATCH 3/5] =?UTF-8?q?[DEL/#466]=20=EC=9D=B8=20=EC=95=B1=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=EB=B8=8C=EB=9F=AC=EB=A6=AC=20=EB=94=94=ED=8E=9C=EB=8D=98?= =?UTF-8?q?=EC=8B=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/AndroidApplicationPlugin.kt | 1 - gradle/libs.versions.toml | 44 +++++++++---------- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/plugins/AndroidApplicationPlugin.kt b/build-logic/convention/src/main/kotlin/plugins/AndroidApplicationPlugin.kt index ee3b5b1ea..30aad847f 100644 --- a/build-logic/convention/src/main/kotlin/plugins/AndroidApplicationPlugin.kt +++ b/build-logic/convention/src/main/kotlin/plugins/AndroidApplicationPlugin.kt @@ -159,7 +159,6 @@ class AndroidApplicationPlugin : Plugin { androidTestImplementation(libs.getLibrary("espresso")) // google - implementation(libs.getLibrary("inAppUpdate")) implementation(libs.getLibrary("ossLicense")) implementation(libs.getLibrary("gson")) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 177b666a6..5f2f3b4ee 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,7 +14,7 @@ materialDesignVersion = "1.9.0" constraintLayoutVersion = "2.1.4" appStartUpVersion = "1.1.1" legacySupportVersion = "1.0.0" -securityVersion ="1.1.0-alpha06" +securityVersion = "1.1.0-alpha06" hiltVersion = "2.46.1" hiltWorkManagerVersion = "1.0.0" activityKtxVersion = "1.7.2" @@ -37,7 +37,7 @@ composeConstraintLayoutVersion = "1.0.1" composeLottieVersion = "6.0.1" composeCompilerVersion = "1.5.11" composeNavigation = "2.7.7" -composeHiltVersion= "1.2.0" +composeHiltVersion = "1.2.0" ## Firebase firebaseVersion = "30.4.0" @@ -58,8 +58,6 @@ shimmerVersion = "0.5.0" navigationVersion = "2.6.0" amplitudeVersion = "2.23.2" -inAppUpdateVersion = "2.1.0" - gradlePlugin = "8.1.4" googleServicePlugin = "4.3.15" googleAppdistributionPlugin = "4.0.0" @@ -149,39 +147,37 @@ shimmer = { group = "com.facebook.shimmer", name = "shimmer", version.ref = "shi amplitude = { group = "com.amplitude", name = "android-sdk", version.ref = "amplitudeVersion" } gson = { group = "com.google.code.gson", name = "gson", version.ref = "gsonVersion" } ossLicense = { group = "com.google.android.gms", name = "play-services-oss-licenses", version.ref = "ossVersion" } -admob = { group = "com.google.android.gms", name= "play-services-ads", version.ref = "admobVersion"} - -inAppUpdate = { group = "com.google.android.play", name = "app-update-ktx", version.ref = "inAppUpdateVersion" } +admob = { group = "com.google.android.gms", name = "play-services-ads", version.ref = "admobVersion" } firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseVersion" } -firebase-messaging = { group = "com.google.firebase", name = "firebase-messaging-ktx"} -firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics-ktx"} -firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics-ktx"} -firebase-remoteConfig = { group = "com.google.firebase", name = "firebase-config-ktx"} +firebase-messaging = { group = "com.google.firebase", name = "firebase-messaging-ktx" } +firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics-ktx" } +firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics-ktx" } +firebase-remoteConfig = { group = "com.google.firebase", name = "firebase-config-ktx" } firebase-database = { group = "com.google.firebase", name = "firebase-database" } ## Compose compose-activity = { group = "androidx.activity", name = "activity-compose", version.ref = "composeActivityVersion" } compose-animation = { group = "androidx.compose.animation", name = "animation", version.ref = "composeAnimationVersion" } compose-viewModel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "composeViewModelVersion" } -compose-coil = {group = "io.coil-kt", name = "coil-compose", version.ref = "composeCoil"} -compose-constraintLayout = { group = "androidx.constraintlayout", name = "constraintlayout-compose", version.ref = "composeConstraintLayoutVersion"} -compose-lottie = { group = "com.airbnb.android", name = "lottie-compose", version.ref = "composeLottieVersion"} -compose-navigation = { group = "androidx.navigation", name = "navigation-compose", version.ref = "composeNavigation"} -compose-hilt= { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "composeHiltVersion" } +compose-coil = { group = "io.coil-kt", name = "coil-compose", version.ref = "composeCoil" } +compose-constraintLayout = { group = "androidx.constraintlayout", name = "constraintlayout-compose", version.ref = "composeConstraintLayoutVersion" } +compose-lottie = { group = "com.airbnb.android", name = "lottie-compose", version.ref = "composeLottieVersion" } +compose-navigation = { group = "androidx.navigation", name = "navigation-compose", version.ref = "composeNavigation" } +compose-hilt = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "composeHiltVersion" } compose-compiler-extension = { module = "org.jetbrains.kotlin:compose-compiler-gradle-plugin", version.ref = "kotlinVersion" } ## Compose Bom compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } -compose-bom-material3 = {group = "androidx.compose.material3", name = "material3"} -compose-bom-material2 = {group = "androidx.compose.material", name = "material"} -compose-bom-ui = {group = "androidx.compose.ui", name = "ui"} +compose-bom-material3 = { group = "androidx.compose.material3", name = "material3" } +compose-bom-material2 = { group = "androidx.compose.material", name = "material" } +compose-bom-ui = { group = "androidx.compose.ui", name = "ui" } compose-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } -compose-bom-preview = {group = "androidx.compose.ui", name = "ui-tooling-preview"} -compose-bom-debug-ui-tooling = {group = "androidx.compose.ui", name = "ui-tooling"} -compose-bom-ui-test = {group = "androidx.compose.ui", name = "ui-test-junit4"} -compose-bom-debug-ui-test-manifest = {group = "androidx.compose.ui", name="ui-test-manifest"} -compose-runtime = {group = "androidx.compose.runtime", name="runtime"} +compose-bom-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } +compose-bom-debug-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } +compose-bom-ui-test = { group = "androidx.compose.ui", name = "ui-test-junit4" } +compose-bom-debug-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } +compose-runtime = { group = "androidx.compose.runtime", name = "runtime" } ## Test jUnit = { group = "junit", name = "junit", version.ref = "junitVersion" } From cb0f88a644b66509c578424e1594209c07667960 Mon Sep 17 00:00:00 2001 From: b1urrrr <20190993@sungshin.ac.kr> Date: Fri, 16 Aug 2024 00:57:22 +0900 Subject: [PATCH 4/5] =?UTF-8?q?[MOD/#466]=20=EB=B2=84=EC=A0=84=EB=AA=85=20?= =?UTF-8?q?2.3=20=EB=B2=84=EC=A0=84=20=EC=BD=94=EB=93=9C=2053=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build-logic/convention/src/main/kotlin/Constants.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/Constants.kt b/build-logic/convention/src/main/kotlin/Constants.kt index a04b332e4..f2e0d6f19 100644 --- a/build-logic/convention/src/main/kotlin/Constants.kt +++ b/build-logic/convention/src/main/kotlin/Constants.kt @@ -3,7 +3,7 @@ object Constants { const val compileSdk = 34 const val minSdk = 28 const val targetSdk = 34 - const val versionCode = 52 - const val versionName = "2.2" + const val versionCode = 53 + const val versionName = "2.3" const val jvmVersion = "18" } \ No newline at end of file From 337eb323d024bc737bb530760c1e5c136e6ff0f8 Mon Sep 17 00:00:00 2001 From: b1urrrr <20190993@sungshin.ac.kr> Date: Fri, 16 Aug 2024 01:53:08 +0900 Subject: [PATCH 5/5] =?UTF-8?q?[CHORE/#466]=20=EB=9D=BC=EC=9D=B4=EB=B8=8C?= =?UTF-8?q?=EB=9F=AC=EB=A6=AC=20=EC=B5=9C=EC=8B=A0=20=EB=B2=84=EC=A0=84=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/splash/SplashActivity.kt | 1 - gradle/libs.versions.toml | 52 +++++++++---------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/el/yello/presentation/splash/SplashActivity.kt b/app/src/main/java/com/el/yello/presentation/splash/SplashActivity.kt index b06e61d25..370e5e119 100644 --- a/app/src/main/java/com/el/yello/presentation/splash/SplashActivity.kt +++ b/app/src/main/java/com/el/yello/presentation/splash/SplashActivity.kt @@ -24,7 +24,6 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import timber.log.Timber - @AndroidEntryPoint class SplashActivity : BindingActivity(R.layout.activity_splash) { private val viewModel by viewModels() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5f2f3b4ee..ab4fe045e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,34 +3,34 @@ buildToolsVersion = "34.0.0" ## Kotlin kotlinVersion = "1.9.23" kotlinSerializationJsonVersion = "1.5.1" -coroutinesAndroidVersion = "1.7.1" +coroutinesAndroidVersion = "1.7.3" kotlinDateTimeVersion = "0.4.0" gsonVersion = "2.10.1" ## AndroidX -coreKtxVersion = "1.10.1" -appCompatVersion = "1.6.1" -materialDesignVersion = "1.9.0" +coreKtxVersion = "1.13.1" +appCompatVersion = "1.7.0" +materialDesignVersion = "1.12.0" constraintLayoutVersion = "2.1.4" appStartUpVersion = "1.1.1" legacySupportVersion = "1.0.0" securityVersion = "1.1.0-alpha06" -hiltVersion = "2.46.1" -hiltWorkManagerVersion = "1.0.0" -activityKtxVersion = "1.7.2" -fragmentKtxVersion = "1.5.7" -pagingVersion = "3.1.1" -lifecycleVersion = "2.6.1" -ossVersion = "17.0.0" -splashVersion = "1.0.0-beta01" -workManagerVersion = "2.8.1" -billingVersion = "6.0.1" -admobVersion = "21.5.0" +hiltVersion = "2.49" +hiltWorkManagerVersion = "1.2.0" +activityKtxVersion = "1.9.1" +fragmentKtxVersion = "1.8.2" +pagingVersion = "3.3.2" +lifecycleVersion = "2.8.4" +ossVersion = "17.1.0" +splashVersion = "1.2.0-alpha01" +workManagerVersion = "2.9.1" +billingVersion = "7.0.0" +admobVersion = "23.3.0" ## Compose -composeActivityVersion = "1.9.0" +composeActivityVersion = "1.9.1" composeAnimationVersion = "1.6.8" -composeViewModelVersion = "2.7.0" +composeViewModelVersion = "2.8.4" composeBom = "2024.06.00" composeCoil = "2.6.0" composeConstraintLayoutVersion = "1.0.1" @@ -40,7 +40,7 @@ composeNavigation = "2.7.7" composeHiltVersion = "1.2.0" ## Firebase -firebaseVersion = "30.4.0" +firebaseVersion = "33.1.2" ## Third-party coilVersion = "2.6.0" @@ -50,24 +50,24 @@ okHttpVersion = "4.12.0" timberVersion = "5.0.1" progressViewVersion = "1.1.3" balloonVersion = "1.4.5" -lottieVersion = "6.0.0" +lottieVersion = "6.0.1" circularProgressBar = "3.1.0" kakaoVersion = "2.14.0" circleIndicatorVersion = "2.1.6" shimmerVersion = "0.5.0" -navigationVersion = "2.6.0" +navigationVersion = "2.7.7" amplitudeVersion = "2.23.2" gradlePlugin = "8.1.4" -googleServicePlugin = "4.3.15" -googleAppdistributionPlugin = "4.0.0" -googleCrashlyticsPlguin = "2.9.7" -ossPlugin = "0.10.4" +googleServicePlugin = "4.4.2" +googleAppdistributionPlugin = "5.0.0" +googleCrashlyticsPlguin = "3.0.2" +ossPlugin = "0.10.6" ## Test junitVersion = "4.13.2" -espressoVersion = "3.3.0" -androidTestVersion = "1.1.2" +espressoVersion = "3.6.1" +androidTestVersion = "1.2.1" ## Flipper flipperVersion = "0.187.0"