본문 바로가기

안드로이드50

16KB 페이지 크기 지원 - 왜 하는거고 어떻게 하는 것인가? 1. 16KB 페이지 크기 지원 1-1. 도대체 16KB 페이지가 뭔데? 1-2. 페이지 테이블 수 감소 1-3. TLB 효율 증가 1-4. 실질적으로 얼마나 개선이 되는 건데?2. 16KB 지원이 필요한지 확인하는 방법 2-1. 라이브러리 호환 확인 2-2. AGP 버전 확인 2-3. NDK 확인3. 해결 방법 3-1. 안드로이드 공식 라이브러리 3-2. Git Repository에 등록된 라이브러리 3-3. B2B 라이브러리4. 검증5. 팁 5-1. 라이브러리 목록과 지원 버전 5-2. FirebaseBoM 버전 2025년 11월 1일부터 Android 15 이상을 타겟팅하는 앱들은16KB 페이지 크기를 지원해야만 업로드할 수 있도록 정책이 변경된.. 2025. 11. 2.
안드로이드 Flipper - 디버그와 mock을 편리하게! 1. Flipper란?2. QA팀에게 소개하는 이유   2-1. 원인 파악이 빨라진다.   2-2. 데이터를 조작할 수 있다.3. 설치4. 설정5. 사용법6. Mocking이 안 되는 3가지 이유   6-1. Interceptor 인자   6-2. addNetworkInterceptor   6-3. path 중복     1. Flipper란?Flipper는 iOS, Android, React Native를 디버깅하는 도구이다.서버 응답 값을 간편하게 확인할 수 있고백엔드의 도움이 없이 응답 값을 조작할 수 있다. 원래는 안드로이드 스튜디오에서 제공하는 App Inspection을 사용했으나Flipper가 더 가볍고 기능이 많아 난 요즘 이것만 사용하는 중이다.Flipper는 앱 개발자뿐만 아니라 QA분들.. 2025. 3. 4.
주니어 개발자가 DTO 설계에서 놓치기 쉬운 실수들 1. DTO란?2. 문제가 발생한 배경3. 서버와 DTO를 일치시켰는가?   3-1. 서버는 모델을 분리, 클라이언트는 통합하는 경우   3-2. 서버는 모델을 통합, 클라이언트는 분리하는 경우4. 네이밍이 명확한가?   4-1. 어떤 액션에 필요한 모델인지 명시하자   4-2. 모델 안의 내용은 변경될 수 있음을 염두하자     1. DTO란?인터넷에 검색하면 나오는 DTO의 정의는Data Transfer Object. 데이터 전송 객체를 뜻한다. 예를 들어 클라이언트가 API를 호출해서 Response를 받을 때의 객체를 DTO라 부른다.계층 간의 데이터 교환을 위해 사용하는 객체인 것이다.위 예시에서는 서버와 클라이언트가 데이터를 주고받을 때 사용하는 객체라고 표현한 것이고.. 아무튼 정의는 이런데.. 2024. 10. 19.
신입 개발자가 처음으로 사고친 썰 그날은 왠지 코딩을 하고 싶은 날이었다. 누구나 그렇듯 매일 나도 컨디션이 오르락 내리락 하고 공부를 해야겠다는 자극 또한 매번 다르게 느낀다. 아마 그날은 그 주기가 적절히 겹쳤을 때 컨디션도 좋은데 공부에 대한 자극 또한 상한가를 쳤을 때였다. 회사에 가서 코딩 좀 해볼까? 처음에는 카페에 가서 코딩을 할까 생각했다. "어라? 근데 생각해 보니까 회사에 가면 에어컨도 빵빵하고 눈치 안 보고 오래 있을 수 있잖아?" (주말이었기 때문에 회사에는 사람이 없었다) 알고 있다. 주말에 자진해서 회사를 가는 바보가 어디 있을까? 하지만 말했듯이 내 컨디션과 공부자극이 최대치였기 때문에 가능했다. (이때 이 미친 짓을 멈췄어야 하는데... 🤦🏻‍♂️) 사람도 없겠다 노래를 빵빵하게 틀어놓고 신나게 코딩을 했다... 2023. 11. 11.
결제 구현 중 productDetailsList가 empty list를 받아오는 이유 1. 증상 2. 원인 및 해결 방법 2-1. 타이밍 이슈 2-2. 플레이 콘솔에 상품을 제대로 등록했는가? 2-3. 패키지명이 일치하는가? 1. 증상 요즘 구독 결제 기능을 개발하고 있는데 플레이 콘솔에 등록된 상품 정보를 불러오지 못하는 이슈가 있었다. 코드를 정확히 짚어서 말해보자면 private fun querySubscriptionProductDetails() { val params = QueryProductDetailsParams.newBuilder() val productList: MutableList = arrayListOf() for (product in LIST_OF_SUBSCRIPTION_PRODUCTS) { productList.add( QueryProductDetailsParams... 2023. 11. 2.