diff --git a/README.md b/README.md index bb087e8d0..9d7b37480 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ ## ๐Ÿค– Android - Android Studio : Android Studio Koala | 2024.1.1 - JDK : 17 -- minSDK : 23 +- minSDK : 28 - targetSDK : 35 ## ๐Ÿš Convertion diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5da8f4c59..caf467be6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -21,7 +21,7 @@ android { // S21: API 33 defaultConfig { applicationId = "com.eatssu.android" - minSdk = 23 + minSdk = 28 targetSdk = 35 versionCode = 35 versionName = "2.1.15" @@ -52,8 +52,8 @@ android { buildConfigField("String", "NAVER_MAPS_CLIENT_ID", "\"$naverMapsClientID\"") manifestPlaceholders["NAVER_MAPS_CLIENT_ID"] = naverMapsClientID - isShrinkResources = false - isMinifyEnabled = false + isShrinkResources = true + isMinifyEnabled = true proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index e9a2e3464..2dfb6b766 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -23,3 +23,26 @@ # https://developers.kakao.com/docs/latest/en/getting-started/sdk-android#configure-for-shrinking-and-obfuscation-(optional) -keep class com.kakao.sdk.**.model.* { ; } -keep class * extends com.google.gson.TypeAdapter + +# https://firebase.google.com/docs/database/android/start?hl=ko +-keepattributes Signature + +-keep class com.eatssu.android.data.dto.** { + *; +} +-keep class com.eatssu.android.data.enums.** { + *; +} + +# https://github.com/square/okhttp/pull/6792 +-dontwarn org.bouncycastle.jsse.** +-dontwarn org.conscrypt.* +-dontwarn org.openjsse.** + +# refrofit2 (with r8 full mode) +-if interface * { @retrofit2.http.* ; } +-keep,allowobfuscation interface <1> +-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation +-if interface * { @retrofit2.http.* public *** *(...); } +-keep,allowoptimization,allowshrinking,allowobfuscation class <3> +-keep,allowobfuscation,allowshrinking class retrofit2.Response \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/alarm/NotificationReceiver.kt b/app/src/main/java/com/eatssu/android/alarm/NotificationReceiver.kt index 328646856..ed404748b 100644 --- a/app/src/main/java/com/eatssu/android/alarm/NotificationReceiver.kt +++ b/app/src/main/java/com/eatssu/android/alarm/NotificationReceiver.kt @@ -6,8 +6,6 @@ import android.app.PendingIntent import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import android.os.Build -import androidx.annotation.RequiresApi import androidx.core.app.NotificationCompat import com.eatssu.android.R import com.eatssu.android.presentation.login.IntroActivity @@ -16,7 +14,6 @@ import java.time.LocalDateTime class NotificationReceiver : BroadcastReceiver() { - @RequiresApi(Build.VERSION_CODES.O) override fun onReceive(context: Context, intent: Intent) { // ํ˜„์žฌ ์š”์ผ์ด ํ‰์ผ์ธ ๊ฒฝ์šฐ์—๋งŒ ์•Œ๋ฆผ์„ ๋ฐœ์†ก val currentDay = LocalDateTime.now().dayOfWeek @@ -29,19 +26,17 @@ class NotificationReceiver : BroadcastReceiver() { val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - val channel = NotificationChannel( - CHANNEL_ID, - "์ ์‹ฌ์‹œ๊ฐ„ ์ „ ์•Œ๋ฆผ", - NotificationManager.IMPORTANCE_HIGH // ์ค‘์š”๋„๋ฅผ ๋†’๊ฒŒ ์„ค์ • - ).apply { - description = "์ ์‹ฌ์‹œ๊ฐ„ ์ „, ํ‘ธ์‹œ์•Œ๋ฆผ์„ ๋ฐœ์†กํ•ฉ๋‹ˆ๋‹ค." - enableLights(true) - enableVibration(true) // ์ง„๋™๋„ ํ™œ์„ฑํ™” - lockscreenVisibility = NotificationCompat.VISIBILITY_PUBLIC // ์ž ๊ธˆ ํ™”๋ฉด์—์„œ๋„ ํ‘œ์‹œ - } - notificationManager.createNotificationChannel(channel) + val channel = NotificationChannel( + CHANNEL_ID, + "์ ์‹ฌ์‹œ๊ฐ„ ์ „ ์•Œ๋ฆผ", + NotificationManager.IMPORTANCE_HIGH // ์ค‘์š”๋„๋ฅผ ๋†’๊ฒŒ ์„ค์ • + ).apply { + description = "์ ์‹ฌ์‹œ๊ฐ„ ์ „, ํ‘ธ์‹œ์•Œ๋ฆผ์„ ๋ฐœ์†กํ•ฉ๋‹ˆ๋‹ค." + enableLights(true) + enableVibration(true) // ์ง„๋™๋„ ํ™œ์„ฑํ™” + lockscreenVisibility = NotificationCompat.VISIBILITY_PUBLIC // ์ž ๊ธˆ ํ™”๋ฉด์—์„œ๋„ ํ‘œ์‹œ } + notificationManager.createNotificationChannel(channel) val intent = Intent(context, IntroActivity::class.java).apply { diff --git a/app/src/main/java/com/eatssu/android/presentation/MainActivity.kt b/app/src/main/java/com/eatssu/android/presentation/MainActivity.kt index b6ea8ca4a..0578c9b6f 100644 --- a/app/src/main/java/com/eatssu/android/presentation/MainActivity.kt +++ b/app/src/main/java/com/eatssu/android/presentation/MainActivity.kt @@ -9,7 +9,6 @@ import android.os.SystemClock import android.view.MenuItem import android.view.View.GONE import androidx.activity.viewModels -import androidx.annotation.RequiresApi import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.lifecycle.lifecycleScope @@ -40,7 +39,6 @@ class MainActivity : BaseActivity(ActivityMainBinding::infl private val mainViewModel: MainViewModel by viewModels() private val myPageViewModel: MyPageViewModel by viewModels() - @RequiresApi(Build.VERSION_CODES.O) @SuppressLint("SuspiciousIndentation") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaFragment.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaFragment.kt index 7f1ef269e..d91969059 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaFragment.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaFragment.kt @@ -1,11 +1,9 @@ package com.eatssu.android.presentation.cafeteria -import android.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.annotation.RequiresApi import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -38,7 +36,6 @@ class CafeteriaFragment : BaseFragment(), OnItemListen return FragmentCafeteriaBinding.inflate(layoutInflater) } - @RequiresApi(Build.VERSION_CODES.O) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -84,7 +81,6 @@ class CafeteriaFragment : BaseFragment(), OnItemListen monthYearText = binding.monthYearTV } - @RequiresApi(Build.VERSION_CODES.O) private fun setWeekView() { monthYearText?.text = CalendarUtil.selectedDate?.let { monthYearFromDate(it) } val days = CalendarUtil.selectedDate?.let { daysInWeekArray(it) } @@ -95,7 +91,6 @@ class CafeteriaFragment : BaseFragment(), OnItemListen calendarRecyclerView?.adapter = calendarAdapter } - @RequiresApi(Build.VERSION_CODES.O) fun setCalendarWeekClickListener() { binding.btnPreviousWeek.setOnClickListener { CalendarUtil.selectedDate = CalendarUtil.selectedDate.minusWeeks(1) @@ -110,7 +105,6 @@ class CafeteriaFragment : BaseFragment(), OnItemListen } } - @RequiresApi(Build.VERSION_CODES.O) override fun onItemClick(position: Int, date: LocalDate) { CalendarUtil.selectedDate = date mainViewModel.setData(date) diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt index 392ab8f84..cd9841f80 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt @@ -1,7 +1,5 @@ package com.eatssu.android.presentation.cafeteria -import android.os.Build -import androidx.annotation.RequiresApi import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.viewpager2.adapter.FragmentStateAdapter @@ -35,7 +33,6 @@ class CafeteriaViewPagerAdapter(fragmentActivity: FragmentActivity) : } // 4. ๋””ํดํŠธ๋กœ ๋…ธ์ถœํ•  Fragment์˜ ์œ„์น˜๋ฅผ ์„ค์ • - @RequiresApi(Build.VERSION_CODES.O) fun getDefaultFragmentPosition(): Int { // ์—ฌ๊ธฐ์—์„œ ๋””ํดํŠธ๋กœ ๋…ธ์ถœํ•  Fragment์˜ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค๋‹ˆ๋‹ค. // ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฒซ ๋ฒˆ์งธ Fragment๋ฅผ ๋””ํดํŠธ๋กœ ์„ค์ •ํ•˜๋ ค๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/calendar/CalendarAdapter.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/calendar/CalendarAdapter.kt index 8e3c7a005..44d21d2a0 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/calendar/CalendarAdapter.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/calendar/CalendarAdapter.kt @@ -1,9 +1,7 @@ package com.eatssu.android.presentation.cafeteria.calendar -import android.os.Build import android.view.LayoutInflater import android.view.ViewGroup -import androidx.annotation.RequiresApi import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.eatssu.android.R @@ -34,7 +32,6 @@ internal class CalendarAdapter( } - @RequiresApi(Build.VERSION_CODES.O) override fun onBindViewHolder(holder: CalendarViewHolder, position: Int) { val date = days[position] holder.dayOfMonth.text = date.dayOfMonth.toString() diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/menu/MenuFragment.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/menu/MenuFragment.kt index d16a0b68d..6c7320290 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/menu/MenuFragment.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/menu/MenuFragment.kt @@ -1,11 +1,9 @@ package com.eatssu.android.presentation.cafeteria.menu -import android.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.annotation.RequiresApi import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels @@ -69,7 +67,6 @@ class MenuFragment : Fragment() { return binding.root } - @RequiresApi(Build.VERSION_CODES.O) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -82,7 +79,6 @@ class MenuFragment : Fragment() { observeViewModel() } - @RequiresApi(Build.VERSION_CODES.O) fun observeViewModel() { mainViewModel.getData().observe(viewLifecycleOwner) { dataReceived -> diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/menu/ReviewWriteMenuActivity.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/menu/ReviewWriteMenuActivity.kt index 744461e19..54609805b 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/menu/ReviewWriteMenuActivity.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/menu/ReviewWriteMenuActivity.kt @@ -1,10 +1,8 @@ package com.eatssu.android.presentation.cafeteria.review.write.menu import android.content.Intent -import android.os.Build import android.os.Bundle import androidx.activity.viewModels -import androidx.annotation.RequiresApi import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import com.eatssu.android.databinding.ActivityReviewWriteMenuBinding @@ -24,7 +22,6 @@ class ReviewWriteMenuActivity : private lateinit var variableMenuPickAdapter: VariableMenuPickAdapter - @RequiresApi(Build.VERSION_CODES.O) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) toolbarTitle.text = "๋ฆฌ๋ทฐ ๋‚จ๊ธฐ๊ธฐ" // ํˆด๋ฐ” ์ œ๋ชฉ ์„ค์ • diff --git a/app/src/main/java/com/eatssu/android/presentation/mypage/MyPageFragment.kt b/app/src/main/java/com/eatssu/android/presentation/mypage/MyPageFragment.kt index 122f34014..6f5848f20 100644 --- a/app/src/main/java/com/eatssu/android/presentation/mypage/MyPageFragment.kt +++ b/app/src/main/java/com/eatssu/android/presentation/mypage/MyPageFragment.kt @@ -10,7 +10,6 @@ import android.os.Bundle import android.provider.Settings import android.view.LayoutInflater import android.view.View -import androidx.annotation.RequiresApi import androidx.appcompat.app.AlertDialog import androidx.core.content.ContextCompat import androidx.fragment.app.activityViewModels @@ -20,8 +19,8 @@ import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import com.eatssu.android.R import com.eatssu.android.databinding.FragmentMyPageBinding -import com.eatssu.android.presentation.base.BaseFragment import com.eatssu.android.presentation.MainViewModel +import com.eatssu.android.presentation.base.BaseFragment import com.eatssu.android.presentation.login.LoginActivity import com.eatssu.android.presentation.mypage.myreview.MyReviewListActivity import com.eatssu.android.presentation.mypage.terms.WebViewActivity @@ -43,7 +42,6 @@ class MyPageFragment : BaseFragment() { return FragmentMyPageBinding.inflate(layoutInflater) } - @RequiresApi(Build.VERSION_CODES.O) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -52,7 +50,6 @@ class MyPageFragment : BaseFragment() { setOnClickListener() } - @RequiresApi(Build.VERSION_CODES.O) private fun setupObservers() { viewLifecycleOwner.lifecycleScope.launch { repeatOnLifecycle(Lifecycle.State.STARTED) { @@ -73,7 +70,6 @@ class MyPageFragment : BaseFragment() { } } - @RequiresApi(Build.VERSION_CODES.O) private fun handleAlarmSwitchChange(isChecked: Boolean) { val nowDatetime = LocalDateTime.now() val formattedDate = nowDatetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")) @@ -91,7 +87,6 @@ class MyPageFragment : BaseFragment() { } } - @RequiresApi(Build.VERSION_CODES.O) private fun setOnClickListener() { binding.llMyInfo.setOnClickListener { startActivity(Intent(requireContext(), UserInfoActivity::class.java)) @@ -137,7 +132,6 @@ class MyPageFragment : BaseFragment() { } } - @RequiresApi(Build.VERSION_CODES.O) private fun showNotificationPermissionDialog() { AlertDialog.Builder(requireContext()) .setTitle("์•Œ๋ฆผ ๊ถŒํ•œ ํ•„์š”") @@ -182,7 +176,6 @@ class MyPageFragment : BaseFragment() { } } - @RequiresApi(Build.VERSION_CODES.O) private fun openAppNotificationSettings(context: Context) { val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply { putExtra(Settings.EXTRA_APP_PACKAGE, context.packageName) diff --git a/app/src/main/java/com/eatssu/android/presentation/util/CalendarUtil.kt b/app/src/main/java/com/eatssu/android/presentation/util/CalendarUtil.kt index cd95c0ac8..756d0780e 100644 --- a/app/src/main/java/com/eatssu/android/presentation/util/CalendarUtil.kt +++ b/app/src/main/java/com/eatssu/android/presentation/util/CalendarUtil.kt @@ -1,12 +1,9 @@ package com.eatssu.android.presentation.util -import android.os.Build -import androidx.annotation.RequiresApi import java.text.SimpleDateFormat import java.time.DayOfWeek import java.time.LocalDate import java.time.format.DateTimeFormatter -import java.util.Calendar import java.util.Date import java.util.Locale @@ -14,13 +11,11 @@ import java.util.Locale object CalendarUtil { lateinit var selectedDate: LocalDate - @RequiresApi(Build.VERSION_CODES.O) fun monthYearFromDate(date: LocalDate): String { val formatter = DateTimeFormatter.ofPattern("yyyy.MM") return date.format(formatter) } - @RequiresApi(Build.VERSION_CODES.O) fun daysInWeekArray(selectedDate: LocalDate): ArrayList { val days = ArrayList() var current = sundayForDate(selectedDate) @@ -32,7 +27,6 @@ object CalendarUtil { return days } - @RequiresApi(Build.VERSION_CODES.O) private fun sundayForDate(current: LocalDate): LocalDate? { var current = current val oneWeekAgo = current.minusWeeks(1) @@ -50,15 +44,8 @@ object CalendarUtil { } fun getNextDayDate(): String { - return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - val nextDay = LocalDate.now().plusDays(1) - val formatter = DateTimeFormatter.ofPattern("yyyyMMdd", Locale.getDefault()) - nextDay.format(formatter) - } else { - val calendar = Calendar.getInstance() - calendar.add(Calendar.DAY_OF_MONTH, 1) - val formatter = SimpleDateFormat("yyyyMMdd", Locale.getDefault()) - formatter.format(calendar.time) - } + val nextDay = LocalDate.now().plusDays(1) + val formatter = DateTimeFormatter.ofPattern("yyyyMMdd", Locale.getDefault()) + return nextDay.format(formatter) } } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/presentation/widget/MealWorker.kt b/app/src/main/java/com/eatssu/android/presentation/widget/MealWorker.kt index 005c33af3..c73cf180d 100644 --- a/app/src/main/java/com/eatssu/android/presentation/widget/MealWorker.kt +++ b/app/src/main/java/com/eatssu/android/presentation/widget/MealWorker.kt @@ -1,8 +1,6 @@ package com.eatssu.android.presentation.widget import android.content.Context -import android.os.Build -import androidx.annotation.RequiresApi import androidx.glance.GlanceId import androidx.glance.appwidget.GlanceAppWidgetManager import androidx.glance.appwidget.state.updateAppWidgetState @@ -32,7 +30,6 @@ class MealWorker @AssistedInject constructor( companion object { private val uniqueWorkName = MealWorker::class.java.simpleName - @RequiresApi(Build.VERSION_CODES.O) fun enqueue(context: Context) { val manager = WorkManager.getInstance(context) val requestBuilder = PeriodicWorkRequestBuilder( @@ -48,7 +45,6 @@ class MealWorker @AssistedInject constructor( } } - @RequiresApi(Build.VERSION_CODES.O) override suspend fun doWork(): Result { val manager = GlanceAppWidgetManager(context) val glanceIds = manager.getGlanceIds(MealWidget::class.java) diff --git a/app/src/main/java/com/eatssu/android/presentation/widget/WidgetCacheManager.kt b/app/src/main/java/com/eatssu/android/presentation/widget/WidgetCacheManager.kt index 4d5732dc5..8691dca3c 100644 --- a/app/src/main/java/com/eatssu/android/presentation/widget/WidgetCacheManager.kt +++ b/app/src/main/java/com/eatssu/android/presentation/widget/WidgetCacheManager.kt @@ -1,8 +1,6 @@ package com.eatssu.android.presentation.widget -import android.os.Build -import androidx.annotation.RequiresApi import com.eatssu.android.domain.model.WidgetMealInfo import com.eatssu.common.enums.Restaurant import timber.log.Timber @@ -29,7 +27,6 @@ object WidgetCacheManager { /** * ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ํšจํ•œ์ง€ ํ™•์ธ */ - @RequiresApi(Build.VERSION_CODES.O) private fun isCacheValid(cachedData: CachedMealData, currentDate: String): Boolean { val now = LocalDateTime.now() val timeDiff = java.time.Duration.between(cachedData.timestamp, now) @@ -41,7 +38,6 @@ object WidgetCacheManager { /** * ์บ์‹œ์—์„œ ์‹๋‹น๋ณ„ ๋ฉ”๋‰ด ๋ฐ์ดํ„ฐ ์กฐํšŒ */ - @RequiresApi(Build.VERSION_CODES.O) fun getCachedMealData(restaurant: Restaurant, currentDate: String): WidgetMealInfo? { val cachedData = cacheMap[restaurant] ?: return null @@ -58,7 +54,6 @@ object WidgetCacheManager { /** * ์‹๋‹น๋ณ„ ๋ฉ”๋‰ด ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ์— ์ €์žฅ */ - @RequiresApi(Build.VERSION_CODES.O) fun cacheMealData(restaurant: Restaurant, mealInfo: WidgetMealInfo, date: String) { val cachedData = CachedMealData( mealInfo = mealInfo, diff --git a/app/src/main/java/com/eatssu/android/presentation/widget/ui/MealWidget.kt b/app/src/main/java/com/eatssu/android/presentation/widget/ui/MealWidget.kt index d2fb68b11..0ebba1249 100644 --- a/app/src/main/java/com/eatssu/android/presentation/widget/ui/MealWidget.kt +++ b/app/src/main/java/com/eatssu/android/presentation/widget/ui/MealWidget.kt @@ -1,8 +1,6 @@ package com.eatssu.android.presentation.widget.ui import android.content.Context -import android.os.Build -import androidx.annotation.RequiresApi import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -68,7 +66,6 @@ class MealWidget : GlanceAppWidget() { fun loadRestaurantByFileKeyUseCase(): LoadRestaurantByFileKeyUseCase } - @RequiresApi(Build.VERSION_CODES.O) override suspend fun provideGlance(context: Context, id: GlanceId) { provideContent { val appContext = context.applicationContext @@ -164,7 +161,6 @@ class MealWidget : GlanceAppWidget() { } } - @RequiresApi(Build.VERSION_CODES.O) @Composable private fun MealWidgetContent( mealTime: String, @@ -202,7 +198,6 @@ class MealWidget : GlanceAppWidget() { ) } - @RequiresApi(Build.VERSION_CODES.O) @Composable fun MealWidgetError( mealTime: String, @@ -297,7 +292,6 @@ class MealWidget : GlanceAppWidget() { } } - @RequiresApi(Build.VERSION_CODES.O) @OptIn(ExperimentalGlancePreviewApi::class) @Preview @Composable @@ -305,7 +299,6 @@ class MealWidget : GlanceAppWidget() { MealWidgetContent("์ €๋…", listOf(listOf("๋ฐฅ", "๊ตญ", "๋ฐ˜์ฐฌ", "์Œ๋ฃŒ")), Restaurant.DODAM.korean) } - @RequiresApi(Build.VERSION_CODES.O) @OptIn(ExperimentalGlancePreviewApi::class) @Preview @Composable diff --git a/app/src/main/java/com/eatssu/android/presentation/widget/ui/WidgetSettingActivity.kt b/app/src/main/java/com/eatssu/android/presentation/widget/ui/WidgetSettingActivity.kt index fb9db2f79..fa77a9a06 100644 --- a/app/src/main/java/com/eatssu/android/presentation/widget/ui/WidgetSettingActivity.kt +++ b/app/src/main/java/com/eatssu/android/presentation/widget/ui/WidgetSettingActivity.kt @@ -2,11 +2,9 @@ package com.eatssu.android.presentation.widget.ui import android.appwidget.AppWidgetManager import android.content.Intent -import android.os.Build import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.annotation.RequiresApi import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -32,7 +30,6 @@ class WidgetSettingActivity : ComponentActivity() { @Inject lateinit var saveRestaurantByFileKeyUseCase: SaveRestaurantByFileKeyUseCase - @RequiresApi(Build.VERSION_CODES.O) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { diff --git a/app/src/main/java/com/eatssu/android/presentation/widget/util/WidgetDataDisplayManager.kt b/app/src/main/java/com/eatssu/android/presentation/widget/util/WidgetDataDisplayManager.kt index 4efe91b04..959f6a37c 100644 --- a/app/src/main/java/com/eatssu/android/presentation/widget/util/WidgetDataDisplayManager.kt +++ b/app/src/main/java/com/eatssu/android/presentation/widget/util/WidgetDataDisplayManager.kt @@ -1,7 +1,5 @@ package com.eatssu.android.presentation.widget.util -import android.os.Build -import androidx.annotation.RequiresApi import com.eatssu.android.domain.model.WidgetMealInfo import com.eatssu.android.domain.usecase.widget.GetTodayMealUseCase import com.eatssu.android.domain.usecase.widget.MealState @@ -35,7 +33,6 @@ sealed class MealInfoState { object WidgetDataDisplayManager { - @RequiresApi(Build.VERSION_CODES.O) internal suspend fun fetchMealInfo( getMealsUseCase: GetTodayMealUseCase, requestedMealTime: MealTime, @@ -109,7 +106,6 @@ object WidgetDataDisplayManager { return emptyMealInfo } - @RequiresApi(Build.VERSION_CODES.O) internal fun getCurrentMealTime(): MealTime { val currentTime = LocalTime.now() val morningEnd = LocalTime.of(9, 0) diff --git a/app/src/main/res/drawable-v24/ic_add_pic.png b/app/src/main/res/drawable/ic_add_pic.png similarity index 100% rename from app/src/main/res/drawable-v24/ic_add_pic.png rename to app/src/main/res/drawable/ic_add_pic.png diff --git a/app/src/main/res/drawable-v24/ic_bell.png b/app/src/main/res/drawable/ic_bell.png similarity index 100% rename from app/src/main/res/drawable-v24/ic_bell.png rename to app/src/main/res/drawable/ic_bell.png diff --git a/app/src/main/res/drawable-v24/ic_profile.png b/app/src/main/res/drawable/ic_profile.png similarity index 100% rename from app/src/main/res/drawable-v24/ic_profile.png rename to app/src/main/res/drawable/ic_profile.png diff --git a/app/src/main/res/drawable-v24/ic_review.png b/app/src/main/res/drawable/ic_review.png similarity index 100% rename from app/src/main/res/drawable-v24/ic_review.png rename to app/src/main/res/drawable/ic_review.png diff --git a/app/src/main/res/drawable-v24/ic_setting.png b/app/src/main/res/drawable/ic_setting.png similarity index 100% rename from app/src/main/res/drawable-v24/ic_setting.png rename to app/src/main/res/drawable/ic_setting.png diff --git a/app/src/main/res/drawable/img_developer.png b/app/src/main/res/drawable/img_developer.png index 4675ba0f2..99b8fa120 100644 Binary files a/app/src/main/res/drawable/img_developer.png and b/app/src/main/res/drawable/img_developer.png differ diff --git a/app/src/main/res/drawable/img_dodam.jpeg b/app/src/main/res/drawable/img_dodam.jpeg index a61e689e7..5b5fc1198 100644 Binary files a/app/src/main/res/drawable/img_dodam.jpeg and b/app/src/main/res/drawable/img_dodam.jpeg differ diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi/ic_launcher.xml similarity index 100% rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to app/src/main/res/mipmap-anydpi/ic_launcher.xml diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml similarity index 100% rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to app/src/main/res/mipmap-anydpi/ic_launcher_round.xml diff --git a/core/design-system/build.gradle.kts b/core/design-system/build.gradle.kts index 1c27707eb..df50f8b7d 100644 --- a/core/design-system/build.gradle.kts +++ b/core/design-system/build.gradle.kts @@ -8,7 +8,7 @@ android { compileSdk = 35 defaultConfig { - minSdk = 23 + minSdk = 28 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") diff --git a/core/design-system/src/main/res/font/font.xml b/core/design-system/src/main/res/font/font.xml deleted file mode 100644 index 699cbc1c4..000000000 --- a/core/design-system/src/main/res/font/font.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/core/design-system/src/main/res/font/pretendard_black.ttf b/core/design-system/src/main/res/font/pretendard_black.ttf deleted file mode 100644 index d0c1db81f..000000000 Binary files a/core/design-system/src/main/res/font/pretendard_black.ttf and /dev/null differ diff --git a/core/design-system/src/main/res/font/pretendard_bold.ttf b/core/design-system/src/main/res/font/pretendard_bold.ttf deleted file mode 100644 index fb07fc65e..000000000 Binary files a/core/design-system/src/main/res/font/pretendard_bold.ttf and /dev/null differ diff --git a/core/design-system/src/main/res/font/pretendard_bold.xml b/core/design-system/src/main/res/font/pretendard_bold.xml new file mode 100644 index 000000000..655998d2d --- /dev/null +++ b/core/design-system/src/main/res/font/pretendard_bold.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/core/design-system/src/main/res/font/pretendard_extrabold.ttf b/core/design-system/src/main/res/font/pretendard_extrabold.ttf deleted file mode 100644 index 9d5fe0728..000000000 Binary files a/core/design-system/src/main/res/font/pretendard_extrabold.ttf and /dev/null differ diff --git a/core/design-system/src/main/res/font/pretendard_extralight.ttf b/core/design-system/src/main/res/font/pretendard_extralight.ttf deleted file mode 100644 index 09e654284..000000000 Binary files a/core/design-system/src/main/res/font/pretendard_extralight.ttf and /dev/null differ diff --git a/core/design-system/src/main/res/font/pretendard_light.ttf b/core/design-system/src/main/res/font/pretendard_light.ttf deleted file mode 100644 index 2e8541d69..000000000 Binary files a/core/design-system/src/main/res/font/pretendard_light.ttf and /dev/null differ diff --git a/core/design-system/src/main/res/font/pretendard_medium.ttf b/core/design-system/src/main/res/font/pretendard_medium.ttf deleted file mode 100644 index 1db67c68f..000000000 Binary files a/core/design-system/src/main/res/font/pretendard_medium.ttf and /dev/null differ diff --git a/core/design-system/src/main/res/font/pretendard_medium.xml b/core/design-system/src/main/res/font/pretendard_medium.xml new file mode 100644 index 000000000..18d442e53 --- /dev/null +++ b/core/design-system/src/main/res/font/pretendard_medium.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/core/design-system/src/main/res/font/pretendard_regular.ttf b/core/design-system/src/main/res/font/pretendard_regular.ttf deleted file mode 100644 index 01147e999..000000000 Binary files a/core/design-system/src/main/res/font/pretendard_regular.ttf and /dev/null differ diff --git a/core/design-system/src/main/res/font/pretendard_regular.xml b/core/design-system/src/main/res/font/pretendard_regular.xml new file mode 100644 index 000000000..683efb1d3 --- /dev/null +++ b/core/design-system/src/main/res/font/pretendard_regular.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/core/design-system/src/main/res/font/pretendard_semibold.ttf b/core/design-system/src/main/res/font/pretendard_semibold.ttf deleted file mode 100644 index 9f2690f09..000000000 Binary files a/core/design-system/src/main/res/font/pretendard_semibold.ttf and /dev/null differ diff --git a/core/design-system/src/main/res/font/pretendard_semibold.xml b/core/design-system/src/main/res/font/pretendard_semibold.xml new file mode 100644 index 000000000..22e372552 --- /dev/null +++ b/core/design-system/src/main/res/font/pretendard_semibold.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/core/design-system/src/main/res/font/pretendard_thin.ttf b/core/design-system/src/main/res/font/pretendard_thin.ttf deleted file mode 100644 index fe9825f1b..000000000 Binary files a/core/design-system/src/main/res/font/pretendard_thin.ttf and /dev/null differ diff --git a/core/design-system/src/main/res/font/pretendard_variable.ttf b/core/design-system/src/main/res/font/pretendard_variable.ttf new file mode 100644 index 000000000..32b0811ea Binary files /dev/null and b/core/design-system/src/main/res/font/pretendard_variable.ttf differ