??님 Preview가 흐릿한데 왜그래요?
·
Android/Compose
안녕하세요 아키입니다. 오늘은 우테코 미션을 진행하다가 마주쳤던 Compose Preview 렌더링 이슈를 공유해보려 합니다.@Preview(device = Devices.DESKTOP)을 사용하면 텍스트와 경계선이 심하게 흐릿하게 렌더링되는 반면 device = Devices.TABLET으로 바꾸면 훨씬 선명하게 보이는 현상을 겪어본 적 있으신가요? 저는 아래와 같은 경우를 경험했어요.처음에는 또 프리뷰가 말썽이구나 했지만 원인은 코드가 아니라 Android Studio 렌더링 엔진의 스케일링 방식과 기기 프로파일별 DPI 설정의 차이에 있었습니다.원인 분석1. Devices.DESKTOP의 낮은 DPIAndroid Studio의 Compose Tooling에서 정의한 Devices.DESKTOP의 기..
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 방법을 함께 제공했습니다. 그걸 이번에 막겠다는 얘기입니다. 단..
Google Mobile Ads Next-Gen SDK, 왜 만든건데?
·
Android
안녕하세요, 이번에 광고 SDK를 도입하면서 알게된 소식을 전달하고자 이번 글을 작성합니다. 도움이 되길 바랍니다👍🏻들어가며Google이 Mobile Ads SDK를 처음부터 다시 만들었습니다. "차세대(Next-Gen)"라는 이름을 붙인 이 SDK는 2026년 7월 정식 출시 예정이고 지금은 오픈 베타로 공개되어 있습니다.광고 SDK를 처음부터 다시 쓰는 건 쉬운 선택이 아니라고 생각합니다.. 하위 호환성이 깨질 수 있고, 마이그레이션 비용도 만만치 않고 예상 못한 버그도 나올 수 있으니까요.그런데도 Google이 이런 결정을 내린 데는 이유가 있었습니다. Next-Gen SDK가 뭘 해결하려고 하는지 어떻게 접근했는지 실제 개발에서는 어떤 의미를 갖는지 정리해봤습니다.기존 SDK의 한계1. 앱 시..
ProcessPhoenix 제거, 자기전에 생각날거야
·
Android/Compose
저는 안드로이드 개발을 하면서 에뮬레이터, 실제 디바이스를 오가면서 앱을 테스트하고 있어요. 디바이스의 경우에는 패드와 저/고사양 기기로 총 3가지를 사용하는데요. 그중에서 저사양 기기에서 앱이 재시작 되는 로직에 프레임드랍이 생기거나 재시작이 무시되는 경우가 종종 발견됐습니다. 처음엔 단순히 기기 성능 문제라고 생각했습니다. 그러나 충분히 최적화 가능하지 않을까? 라는 생각으로 코드를 뜯어보니 사용하던 ProcessPhoenix 라이브러리가 생각보다 무거운 작업을 하고 있었습니다.좀 무거운듯하이링구얼 프로젝트에서는 토큰 만료, 로그아웃, 회원탈퇴의 경우 앱을 재시작하고 있습니다. 그래서 ProcessPhoenix라는 라이브러리를 사용했습니다. 많은 안드로이드 프로젝트에서 사용하는 검증된 라이브러리였으니..
BaseViewModel을 쓰지 않는 이유
·
Android
다른 프로젝트 코드를 볼 때마다 BaseActivity, BaseViewModel 같은 베이스 클래스를 어렵지 않게 볼 수 있습니다. 하지만 솔직히 저는 이런 구조를 이해하지 못했습니다. 항상 왜 이렇게 만들었을까, 어떤 점이 좋다는 걸까 하는 의문을 계속 가졌습니다.물론 쓰는 이유에 대해서 어느정도 짐작이 가긴합니다. 보통은 공통 로직을 한 곳에 모아두면 편하고 코드 중복을 줄이면서 일관된 구조를 유지하는 이점이 있습니다만 그 장점만으로는 베이스 클래스를 쓰지 않는 편이 낫다고 생각했어요.왜 그런 기시감이 들었는지 계속 궁금했는데 최근에 본 영상에서 제가 막연하게 느꼈던 불편함에 대해서 구체화 한것 같았습니다. 그래서 그 내용을 바탕으로 제 생각을 정리해봤습니다.클래스 네이밍으로는 아무것도 알 수 없음..
AGP 9.0 마이그레이션, 뭐가 달라졌는데요?
·
Android
AGP 9.0.0이 정식 릴리즈 되었습니다. 버저닝을 적용할때까지만해도 적당히 한두줄 수정하면 되겠지 하고 업데이트를 시작했는데요..무수한 빨간줄의 요청으로 빌드 시스템을 다시 설계하면서 겪은 경험을 공유하고자 합니다.달라진 것은 생각보다 많았다AGP 9.0은 AGP 8.0 이후 2년 만의 메이저 릴리즈입니다. 단순한 기능 추가가 아니라 지난 몇 년간 준비해온 구조적 변화를 본격적으로 적용한 버전이었습니다.새로운 DSL이 기본값이 되다AGP 7.x와 8.x에서는 하위 호환성 유지를 위해 구형 DSL 타입(BaseExtension 등)과 신형 공개 인터페이스를 동시에 지원했어요. 그런데 AGP 9.0부터는 새로운 DSL 인터페이스만 사용하며 내부 구현이 완전히 숨겨진 새로운 타입으로 변경되었습니다.즉 an..