Android Jetpack 'Compose 사용 시 알아야 하는 Android 기본 사항' 강의'단원 6: 데이터 지속성을 위해 Room 사용'의 4번 챕터 내용을 기반으로 학습 후 작성하는 글입니다.자세한 내용은 하단 링크를 참고하세요. https://developer.android.com/courses/pathways/android-basics-compose-unit-6-pathway-2?hl=ko 데이터 지속성을 위해 Room 사용 | Android Basics Compose - Use Room for data persistence | Android DevelopersRoom 라이브러리를 사용하여 Android 앱에서 관계형 데이터베이스를 쉽게 만들고 사용할 수 있습니다.developer...
Retrofit을 통해 데이터를 받아오고, 네트워크 응답을 파싱하기 위해 kotlinx.serialization을 사용한 JSON 응답 파싱을 시도하다가 해당 오류가 발생하였다. https://plugins.gradle.org/plugin/org.jetbrains.kotlin.plugin.serialization Gradle - Plugin: org.jetbrains.kotlin.plugin.serializationVersion 2.0.0 (latest) 2.0.0 Created 21 May 2024. Kotlin compiler plugin for kotlinx.serialization library plugins { id("org.jetbrains.kotlin.plugin.serialization")..
This version (1.5.14) of the Compose Compiler requires Kotlin version 1.9.24 but you appear to be using Kotlin version 2.0.0 which is not known to be compatible. Please consult the Compose-Kotlin compatibility map located at https://developer.android.com/jetpack/androidx/releases/compose-kotlin to choose a compatible version pair (or `suppressKotlinVersionCompatibilityCheck` but don't say I did..
이전 글에서 이어지는 내용입니다.https://small-stepping.tistory.com/957 종속 항목 삽입이전글에서 이어지는 내용입니다.https://small-stepping.tistory.com/956 UI 레이어와 데이터 레이어 분리레이어를 분리하는 이유코드를 여러 레이어로 분리하면 앱의 확장성이 높아지며 앱이 더 견고해small-stepping.tistory.com 로컬 테스트 설정이전 글들에서 UI 레이어와 데이터 레이어 분리 및 종속 항목 삽입으로 ViewModel에서 REST API 서비스와의 직접적인 상호작용을 추상화하는 저장소 구현에 이르기 까지 MarsPhotos 앱을 리펙터링하였다. 이 과정을 통해 목적이 제한된 작은 코드 조각을 테스트할 수 있다. 기능이 제한된 작은 ..
다음과 같은 에러가 발생하였다. java.lang.RuntimeException: Unable to instantiate instrumentation ComponentInfo{xxx.yyy.test/android.support.test.runner.AndroidJUnitRunner}: java.lang.ClassNotFoundException: Didn't find class "android.support.test.runner.AndroidJUnitRunner" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]] at android.app.ActivityThread.handleBindApplication(A..
다음과 같은 에러가 발생하였다. org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileDebugKotlin'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:142) at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfVali..
Duplicate Class 에러는 동일한 클래스가 두 번 이상 정의되었을 때 발생한다. Duplicate class org.hamcrest.core.IsSame found in modules hamcrest-core-1.1 (org.hamcrest:hamcrest-core:1.1) and junit-4.10 (junit:junit:4.10)Duplicate class org.hamcrest.internal.ArrayIterator found in modules hamcrest-core-1.1 (org.hamcrest:hamcrest-core:1.1) and junit-4.10 (junit:junit:4.10)Duplicate class org.hamcrest.internal.SelfDescribingV..
이전글에서 이어지는 내용입니다.https://small-stepping.tistory.com/956 UI 레이어와 데이터 레이어 분리레이어를 분리하는 이유코드를 여러 레이어로 분리하면 앱의 확장성이 높아지며 앱이 더 견고해지고 테스트하기 더 쉬워진다. 또한 경계가 명확히 정의된 여러 레이어를 사용하면 여러 개발자small-stepping.tistory.com 클래스가 작동하려면 다른 클래스의 객체가 필요한 경우가 많다. 클래스에 다른 클래스가 필요한 경우 필요한 클래스를 종속 항목이라고 한다. 다음 예에서 Car 객체는 Engine 객체에 종속된다.필요한 이 객체를 클래스가 가져오는 방법에는 두 가지가 존재한다. 클래스가 필요한 객체 자체를 인스턴스화 하는 것interface Engine { f..
레이어를 분리하는 이유코드를 여러 레이어로 분리하면 앱의 확장성이 높아지며 앱이 더 견고해지고 테스트하기 더 쉬워진다. 또한 경계가 명확히 정의된 여러 레이어를 사용하면 여러 개발자가 서로에게 부정적인 영향을 주지 않고 동일한 앱을 더 쉽게 작업할 수 있다. Android의 권장 앱 아키텍처에는 앱에 최소한 UI 레이어와 데이터 레이어가 반드시 있어야 한다고 명시되어 있다. 데이터 레이어 정의데이터 레이어는 앱의 비즈니스 로직과 앱 데이터 소싱 및 저장을 담당한다. 데이터 레이어는 단방향 데이터 흐름 패턴을 사용하여 UI 레이어에 데이터를 노출한다. 데이터는 네트워크 요청, 로컬 데이터베이스, 기기의 파일 등 여러 소스에서 가져올 수 있다. 앱에 데이터 소스가 두 개 이상 있을 수도 있다. 앱이 열리면..
1. 코루틴 동기와 비동기뛰어난 사용자 경험을 제공하기 위해서는 동시 실행이라는 중요한 기술이 필요하다. 동시 실행이란, 앱에서 여러 태스크를 동시에 실행하는 것이다. 예를 들어, 앱은 웹 서버에서 데이터를 가져오거나 기기에 사용자 데이터를 저장하는 동시에 사용자 입력 이벤트에 응답하고 적절하게 UI를 업데이트할 수 있다. 앱에서 동시에 작업하기 위해선 Kotlin의 코루틴이라는 것을 사용한다. 코루틴을 사용하면 코드 블록의 실행을 정지했다가 나중에 다시 시작할 수 있으며 그동안 다른 작업도 수행할 수 있다. 코루틴을 사용하면 비동기 코드를 더 쉽게 작성할 수도 있다. 즉, 한 태스크를 완전히 완료하지 않아도 다음 태스크를 시작할 수 있으므로 여러 태스크를 동시에 실행할 수 있다. 동기 코드동기 코드에..