Kotlin7 [안드로이드] Unknown Kotlin JVM target: 21 오류 해결법 🔒 오류와 원인 안드로이드 스튜디오를 업데이트 했더니 기존 프로젝트에서 이런 오류가 생겼다.원인은 Kotlin에서 설정한 JVM 버전이 현재 Gradle 또는 Kotlin 플러그인에서 지원되지 않기 때문에 발생한다고 한다. 확인해보니 Gradle JDK가 21로 되어 있었다. 🗝️ 해결법 아래와 같이 JDK를 17로 변경해주고 module 단위 gradle 파일도 수정해주면 해결~! 위처럼 다운그레이드 하지 않고 21 버전으로 업그레이드를 시도해보았으나, 변경해야 할 부분이 훨씬 더 많고 수정을 하면서 기존 프로젝트와 충돌할 가능성이 컸다. 결국 compose compiler version을 수정하는 부분에서 공식 문서를 보아도 이해하지 못 하게 되면서 포기... 그냥 다운그레이.. 2025. 1. 4. [Kotlin] HiltViewModel이란? (with Compose) 💢 Hilt는 Android에서 의존성 주입(Dependency Injection)을 쉽게 구현할 수 있게 해주는 라이브러리이다. 프로젝트 내에서 수동 DI를 사용하는 상용구 코드를 줄여주며, 모든 Android 구성 요소에 컨테이너를 제공하고 컨테이너의 수명 주기를 자동으로 관리한다.Dependency Injection은 구성요소 간의 의존 관계가 내부가 아닌 외부를 통해 정의되게 하는 디자인 패턴 중 하나이다. 목적은 객체를 생성하고 사용하는 관심사를 분리하는 것. 프로젝트 내에서 MVVM 패턴과 Compose Navigation을 사용했다. ViewModel을 View에 전달하는 과정에서 Hilt를 사용하지 않으니 MainActivity 혹은 NavigationGraph 내에서 ViewMode.. 2024. 7. 28. [Android studio] unexpected end of stream 에러 해결 안드로이드 스튜디오에서 서버 연동 시 일어나는 오류이다.나 같은 경우에는 이 오류가 항상 일어나는 것이 아니라 프로그램을 실행하였을 때 10번 중 3,4번 정도는 성공하고 나머지는 에러가 났다. 애뮬레이터 상에서 계속 에러가 났고, 여러 영어와 낯선 용어들을 열심히 따라해보았지만, 해결하지 못 했다. 막막하던 와중에 혹시나 하는 마음으로 공기계와 연결해보았는데 에러가 발생하지 않았다.애뮬레이터 설정과 충돌이 있는 게 아닌가 싶다. 해결법실제 안드로이드 기기에선 에러가 나지 않으니 실제 기기를 사용하여 개발하자 사실 이걸 에러 해결이라고 봐도 되는지는 잘 모르겠다. 그러나 나처럼 많은 블로그와 영어들을 찾아본 이후에도 해결하지 못한 사람들의 시간을 위해 일단 게시하기로 했다! 2023. 12. 18. [Compose] LazyColumn(LazyRow)과 Lazy를 중첩하는 법(Nested LazyColumn) LazyColumn(LazyRow)란? 기존의 recyclerView를 대체하는 Compose UI이다. 항목의 수가 많거나 길이를 알 수 없는 목록을 특정 뷰로 반복하여 리스트로 보여줘야 할 때 사용한다. recyclerView를 사용해본 사람들이라면 어댑터를 연결하고 ViewHolder를 생성하는 과정이 굉장히~~ 귀찮다. 그런데 LazyColumn을 사용하면 이 복잡한 과정이 모두 필요가 없다. 굳굳 사용법 @Composable private fun courseLazyView(courses: List) { LazyColumn( modifier = Modifier .padding(start = 20.dp, top = 30.dp, end = 20.dp, bottom = 20.dp) ) { items(c.. 2023. 12. 14. Compose Layout(Column, Row, Box) compose는 뷰를 tree구조로 관리하지 않고 flat하게 관리한다고 한다. 하위 요소를 측정한 후, 또 그 요소의 하위 요소를 측정하는 방식이 아니라 한 하위 요소를 하나씩만 측정한다고 한다. 즉, Column, Row, Box 등의 레이아웃을 아무리 중첩해도 flat하게 관리되기 때문에 중첩된 것과 안 된 것에 차이가 없다고 한다. 이 때문에 성능 면에서 ConstraintLayout을 사용하는 이점이 사라져 Compose에서는 사용을 지양하고 있다. 난 이 부분을 처음 접했을 때 너무너무 깜짝 놀랬다. layout의 중첩을 전혀 생각하지 않을 수 있다!! compose에는 재밌는 부분이 굉장히 많은 것 같다. 종류 Column Row Box BoxWithConstraints Column, Row.. 2023. 12. 11. [Compose] 라디오 버튼 형식으로 View 출력하기 개발 요구사항최근 3일 내(오늘, 내일, 모레) 식단을 식사 시간대별로 분류하여 출력오늘, 내일, 모레 버튼을 라디오 버튼 형식으로 구현각각의 버튼을 클릭하면 상응하는 날짜의 식단을 Text로 출력 개발 내용BtnDateView : 라디오 버튼을 구현한 파일MainActivity : 라디오 버튼의 현재값을 받아 ContentView에 전달하는 역할ContentView : 라디오 버튼의 현재값에 따른 출력 파일selectedDay라는 변수 위주!요런 느낌 DateEnumenum class DateEnum(val date:String) { TODAY("오늘"), TOMORROW("내일"), AFTER_TOMORROW("모레")} BtnDateView라디오 버튼을 구현한 파일기본 라디오 버.. 2023. 12. 7. 이전 1 2 다음