목록전체 글 (66)
계발자 블로그
skydoves님께서 지난번 안드로이드 퀴즈에 이어서 코틀린 전용 퀴즈를 공유해 주셨습니다. Kotlin Language 2문제, Stdlib 2문제, Coroutines 2문제, KotlinX 2문제, Compiler 2문제,총 10개의 퀴즈로 이루어져 있습니다. 저번 안드로이드 퀴즈보다 어려웠습니다. Kotlin Developers Quiz | Dove LetterTest your Kotlin expertise across Language, Standard Library, Coroutines, KotlinX Libraries, and Compiler. 10 questions, 100 points total.doveletter.dev 1. Kotlin의 sealed class와 sealed int..
skydoves님께서 안드로이드 개발자를 위한 퀴즈를 공유해 주셨습니다. 안드로이드 4문제, Compose 3문제, Kotlin 3문제로 총 10개 퀴즈로 이루어져 있습니다.풀어보니 꽤 어려웠습니다. 별도의 해설은 없길래 공부할 겸 풀이해 보는 글을 써보려 합니다. Android Developer Quiz | Dove LetterTest your Android, Jetpack Compose, and Kotlin knowledge. 10 questions, 100 points total.doveletter.dev 1. 액티비티가 처음 실행되어 사용자에게 보이지만 아직 포그라운드 상태는 아닐 때, 어떤 생명주기 메서드들이 호출되는지 모두 고르시오 정답: onCreate(), onStart() 해설: 처음..
GDG DevFest Korea Android 2025 - 버터맥주파티안드로이드 개발자들을 위한 ☃️겨울☃️ 축제 DevFest Android in Korea 2025가 돌아왔습니다! 2025년 한 해 정말 많은 일이 있었죠? 이번 DevFest는 올해의 근심걱정을 덜어내고 한껏 즐길 수 있는 맥주 파티 🍻 컨셉으로 여러분들에게 찾아갑니다. 빠르게 성장하는 개발 생태계에서 멋지게 활약하고 계신 개발자분들의 경험 공유 세션도 준비되어 있으니 크리스마스 선물과도 같은 이야기 보따리들을 BGM으로 이번 겨울 즐겁고 따뜻하게 성장해서 내년을 맞이해 보는 시간을 가져봐요! 본 행사는 아래 링크를 통해 참여할 수 있습니다.https://www.ticketa.co/events/64 [세션]박상권 (헤이딜러 Andr..
컴포즈 + mvi 패턴 공부용으로 개인 프로젝트를 진행하고 있습니다.아직 안드로이드 뷰에 대한 mental model이 xml에 너무 익숙해져 있어 컴포즈 다운 사고가 잘 안돼서 어렵고 헷갈리는군요.이 선언형 ui 컴포즈에 대한 포스팅은 따로 해보려고 합니다.각설하고 본 글은 개발 중 흥미 있게 고민해 본 이슈에 대해 써봅니다. @Preview에서 에러 발생java.lang.IllegalStateException: Expected an activity context for creating a HiltViewModelFactory but instead found: com.android.layoutlib.bridge.android.BridgeContext....패키지 경로.CalculatorScreenKt...
최근 회사 업무 중 내부 테스트를 위해 번들을 만들어 공유한 상황이었습니다.안드로이드 스튜디오에서 빌드 했을 때 문제가 없었는데 번들로 설치 했을 때이번에 추가한 화면에서 api 호출은 성공하지만 데이터를 못 불러왔습니다. 원인을 찾아보니 R8 난독화 과정에서 데이터 클래스를 지워버렸습니다. 새로 추가된 화면의 데이터 클래스들은 enum + 중첩 모델이 많았는데 따라서 Gson이 리플렉션을 통해 런타임에 데이터 클래스 생성 - 역직렬화하지만 해당 클래스가 코드에서 직접 참조 되지 않음 - R8은 컴파일 타임에 사용 하지 않는 클래스로 판단(제거)Gson이 필드를 찾지 못함 - 데이터 파싱 실패 기존 api 모델들은 자바 코드로 되어 있는데 코드 상에서 명시적으로 접근하고 있어서R8이 사용 중이라 판단 -..
Record란?어느날 자바 프로젝트에서 lombok을 사용해서 dto를 만들고 있었는데안드로이드 스튜디오에서 record로 바꾸지 않겠냐는 경고가 나타났습니다. record는 불변 데이터 모델을 간결하게 정의하기 위해 Java에서 추가된 문법입니다.Java 14에서 처음 소개 되었고 Java 16부터 정식 기능으로 추가 되었습니다. record는 VO(value Object)를 표현하는 새로운 클래스 타입입니다.기존 자바에서는 데이터를 담기 위한 클래스를 만들기 위해 많은 보일러 플레이트 코드가 필요했습니다.그래서 Lombok을 사용하기도 했죠public class Person { private String name; private int age; public Person(String n..
근 몇년간 앱 개발에서 많이 거론 되는 주제중 하나라고 생각했고 개발자 필독 도서에도 있고무엇보다 프로젝트를 처음 생성 할 때,그리고 이 화면이 어떤 기능을 하는지 도저히 알아보기 힘든 프로젝트를 만났을 때클린 아키텍처에 대한 중요성을 떠올리며 책을 구매해서 읽고 짧게 나마 느낀점을 남기려합니다. 개발 서적을 대학생 때 이후로 오랜만에 읽는거라 걱정을 했지만관심있던 주제라 그런지 의외로 술술 읽혀서 재밌게 읽었습니다.소프트웨어는 부드러워야 한다.수많은 앱을 만든 저자가 느낀 아키텍처 규칙은 동일하다더 강력해진 컴퓨터 성능, 새로운 프로그래밍 언어들이 나오지만 규칙은 바뀌지 않는다 하지만 우린 이 규칙을 계속 어겼고 이 경험을 바탕으로 세월이 흘러도 변치 않는 그 규칙 그게 클린 아키텍처라는 철학이고 이 ..
Combine이란?combine은 비동기 작업을 간단하게 처리할 수 있는 Apple의 framework입니다.iOS 13부터 지원하고 있습니다.기존의 비동기 처리 방식들은 여러 방법을 조합해서 개발하다 보니 코드가 복잡해졌지만combine으로 일관된 방식으로 비동기 처리를 할 수 있게 되었습니다. Combine 주요 컴포넌트Publisher데이터를 방출함ex:) NotificationCenter, URLSession, TimeremdSubscriber구독자 Publisher로부터 데이터를 받는 객체ex:) sink, assignOperatorpublisher에게 받은 값을 가공해서 Subscriber에게 제공ex:) map, filter, reduce, collect, combineLatestSubscr..
DiffableDataSourcef란?iOS 13부터 도입된 UICollectionView, UITableView의 데이터 소스를 관리하는 도구입니다. 기존에 UICollectionViewDataSource가 있었는데 왜 등장하였냐 하면위와 같은 문제가 있었습니다.Controller가 데이터를 받아와서, UI에 변경을 알립니다, 그러면 섹션 수가 잘못되어 앱이 종료되는 경우입니다.Controller와 UI가 갖고 있는 데이터가 일치하지 않는 것입니다.(own version of the truth)따라서 reloadData()로 데이터를 동기화시켜주었어야 합니다. reloadData를 사용해도 괜찮지만 애니메이션 없이 나타납니다. 이는 사용자 경험(UX)을 저하시킵니다.반면 DiffableDataSour..
UICollectionView란?iOS에서 리스트 및 그리드뷰를 구현할 수 있는 뷰에는 UITableView와 UICollectionView가 있습니다. UITableView데이터를 싱글 칼럼으로 나열해 주는 뷰UICollectionView데이터를 여러 칼럼 또는 레이아웃을 커스텀해서 표현해주는 뷰(그리드 뷰)그럼 무엇을 사용해야 할까요? UICollectionView가 자유도가 높음UITableView로 구현할 수 있는 부분을 UICollectionView가 커버할 수 있음두개의 구현 난이도 차이가 크지 않음따라서 간단한 데이터를 리스트로 보여줘야 할 경우가 아니라면 UICollectionView를 사용하는게 나은 것 같습니다. UICollectionView 구성요소UICollectionView: 데이..