??님 Preview가 흐릿한데 왜그래요?
·
Android/Compose
안녕하세요 아키입니다. 오늘은 우테코 미션을 진행하다가 마주쳤던 Compose Preview 렌더링 이슈를 공유해보려 합니다.@Preview(device = Devices.DESKTOP)을 사용하면 텍스트와 경계선이 심하게 흐릿하게 렌더링되는 반면 device = Devices.TABLET으로 바꾸면 훨씬 선명하게 보이는 현상을 겪어본 적 있으신가요? 저는 아래와 같은 경우를 경험했어요.처음에는 또 프리뷰가 말썽이구나 했지만 원인은 코드가 아니라 Android Studio 렌더링 엔진의 스케일링 방식과 기기 프로파일별 DPI 설정의 차이에 있었습니다.원인 분석1. Devices.DESKTOP의 낮은 DPIAndroid Studio의 Compose Tooling에서 정의한 Devices.DESKTOP의 기..
레벨0 - 지연 초기화와 위임, 그리고 4주간의 마무리
·
우아한테크코스/레벨0
마지막 주를 시작하면서드디어 4주차입니다. 솔직히 마지막 주가 가장 실용적인 주차라고 생각했어요. lateinit이랑 by lazy는 안드로이드 프로젝트에서 거의 매일 쓰는 키워드인데 그냥 "Hilt 필드 주입에는 lateinit, 무거운 연산에는 by lazy" 정도로만 사용해왔습니다. 이번 주차도 디컴파일로 학습을 진행했어요.lateinit과 by lazy, 뭐가 다른가이 둘을 "lateinit은 var에만, by lazy는 val에만" 같은, 사용 상황으로만 구분하는 글은 많지만 바이트코드를 보면 두 개념이 얼마나 다른 방식으로 구현되는지 훨씬 명확하게 드러납니다.lateinit은 그냥 null임Compose 환경에서 lateinit이 가장 자주 등장하는 곳은 Hilt 필드 주입이에요. 생성자 주입..
Android 17 BETA, 공부 많이 된다
·
Android
Android 17 Beta 1이 2월 13일에 공개됐습니다. The First Beta of Android 17News and insights on the Android platform, developer tools, and events.android-developers.googleblog.com구글이 생각보다 빠르게 출시를 했는데요? 릴리즈 노트를 훑다가 한 줄이 눈에 걸렸습니다.removes the developer opt-out for orientation and resizability restrictions on large screen devices Android 16에서 이미 방향/크기 조절 제한이 도입됐고 당시에는 opt-out 방법을 함께 제공했습니다. 그걸 이번에 막겠다는 얘기입니다. 단..
레벨0 - 제네릭과 널, 그리고 3주간의 흐름
·
우아한테크코스/레벨0
세 번째 주를 시작하며계획중 가장 머리 아픈 계획이었던 3주차 입니다. 제네릭이랑 널 안전성. 특히 여태까지 안드로이드 개발을 하면서 공변성, 반공변성 같은 개념은 적당이 이해만 하고 넘겼었어요. 사실 직관적인 개념은 아니라고 생각합니다.😅 안드로이드 개발하면서 List이 List의 하위 타입이 아니라는 건 알았지만 왜 그런지는 제대로 이해하지는 않았어요. 그냥 "제네릭이 그렇게 작동한다"고만 받아들였던 것 같아요.이번 주는 그 "왜"를 파고들었습니다. 2주차에서 인터페이스와 추상 클래스의 차이를 바이트코드로 확인했던 것처럼 제네릭도 디컴파일해보면 뭔가 보일거라고 생각해서 확인했어요.나야, 제네릭일단 간단한 코드부터 시작했습니다.val strings: List = listOf("a", "b")val a..
레벨0 - 2주차 회고, 그리고 회고를 회고하기
·
우아한테크코스/레벨0
글을 쓰는 방식에 대하여1주차 회고를 다시 읽어봤습니다. "~~했다. 일까?" "~~이다." 같은 문체로 쓰면서 읽고 나니까 별로 와닿지 않았어요. 디컴파일 결과를 나열하고 "이게 이렇게 작동합니다"라고 설명하는 건 맞는데 정작 내가 그 과정에서 뭘 느꼈는지 뭘 고민했는지는 잘 안 보였어요.그래서 이번 주부터는 평소에 아티클 쓰듯이 문체를 쓰려고 합니다. 항상 자연스러운 문체를 써보려고 하는데 쉽지 않네요. 🥲이번 주에 한 것들2주차 계획은 상속과 인터페이스였습니다. 평소 개발하면서 인터페이스는 자주 썼지만 코틀린의 프로퍼티 선언이 내부적으로 어떻게 처리되는지는 제대로 확인해본 적이 없었어요. 그리고 코틀린이 왜 모든 클래스를 기본적으로 final로 만들었는지도 원리를 알고 싶었습니다.일단 간단한 인터..
Google Mobile Ads Next-Gen SDK, 왜 만든건데?
·
Android
안녕하세요, 이번에 광고 SDK를 도입하면서 알게된 소식을 전달하고자 이번 글을 작성합니다. 도움이 되길 바랍니다👍🏻들어가며Google이 Mobile Ads SDK를 처음부터 다시 만들었습니다. "차세대(Next-Gen)"라는 이름을 붙인 이 SDK는 2026년 7월 정식 출시 예정이고 지금은 오픈 베타로 공개되어 있습니다.광고 SDK를 처음부터 다시 쓰는 건 쉬운 선택이 아니라고 생각합니다.. 하위 호환성이 깨질 수 있고, 마이그레이션 비용도 만만치 않고 예상 못한 버그도 나올 수 있으니까요.그런데도 Google이 이런 결정을 내린 데는 이유가 있었습니다. Next-Gen SDK가 뭘 해결하려고 하는지 어떻게 접근했는지 실제 개발에서는 어떤 의미를 갖는지 정리해봤습니다.기존 SDK의 한계1. 앱 시..