목록전체 글 (67)
계발자 블로그
당근 Android Builder Meetup을 다녀 왔습니다.당근마켓에서는 최초로 진행했다고 하네요무료였고 신청자 중 추첨으로 당첨 된 분들만 참여 가능했는데 운 좋게 당첨되서 다녀올 수 있었습니다.안드로이드 말고도 여러 분야에서 하루씩 행사가 진행 됐습니다. 도착해서 귀여운 굿즈도 받을 수 있었습니다. 평일 오후에 진행 됐던 거라 반차를 쓰고 갔다 왔습니다.마지막은 피자와 음료를 제공해 주셨던 거 같은데사실 오랜시간 작은 의자에 계속 앉아 있다보니 몸에 무리가 가서 한 두시간 남겨 놓고 귀가했습니다,,, 행사에서 들었던 내용들을 말씀드리자면 최선일님의 에이전트가 코드를 짜는 시대, 당근 Android 팀은 어떻게 일하는가 발표에서 Claude Code로 옮기며 환경 4가지를 바꿈. 개인 설정을 팀..
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..
