시리즈
안드로이드를 만들며 배운 것
화면 구성부터 앱 구조와 다국어 지원까지, 구현 중 만난 문제와 해결 방법을 기록했습니다.
-
안드로이드를 만들며 15 — 달력에서 고른 날짜와 저장 시각을 섞었다
이력 필터에 Material DatePicker를 붙이면서 UTC 자정을 기기의 날짜로 읽는 문제를 확인했습니다. 연월일을 옮겨 현지 자정을 만들고 필터 테스트에 시간대를 전달하도록 고쳤습니다.
-
안드로이드를 만들며 16 — 사진 길이를 줬는데 Media3가 트랙을 찾았다
사진을 넣은 영상 내보내기가 Asset loader error로 멈췄습니다. EditedMediaItem의 길이 설정과 별개로 MediaItem에 이미지 표시 시간을 지정해야 했습니다.
-
안드로이드를 만들며 14 — 스키마 파일이 있는데 마이그레이션 테스트가 못 읽었다
Pocket PDF의 JVM 테스트에서 MigrationTestHelper가 스키마 에셋을 찾지 못했습니다. 이전 스키마로 DB를 직접 만들고 실제 마이그레이션과 Room의 최종 검증을 실행하도록 바꿨습니다.
-
안드로이드를 만들며 13 — 다섯 언어의 PRO 번역이 전부 스페인어였다
번역 키 검사를 통과한 다섯 언어의 PRO 파일이 통째로 스페인어였습니다. 문구를 고치면서 동일 문자열 83개 중 실제 오류는 두 개뿐이라는 점도 확인했습니다.
-
안드로이드를 만들며 12 — 광고 위 여백을 만든 두 겹의 Scaffold
설정 화면의 마지막 줄과 광고 사이에 48dp가 비어 있었습니다. 안쪽 Scaffold의 중복 시스템 인셋을 끄자 의도한 여백 24dp만 남았습니다.
-
안드로이드를 만들며 11 — PDF 글자층의 한글 검색과 폰트 서브셋 검증
PDFBox에 넣을 한글 폰트가 필요했습니다. 저장소의 Pretendard OTF를 11,721자의 TTF로 변환하고, 생성한 PDF에서 한글 문장과 금액을 다시 읽었습니다.
-
안드로이드를 만들며 10 — 앱 아이콘의 검은 모서리와 크기를 맞추기까지
둥근 타일 이미지를 적응형 아이콘으로 옮기며 검은 모서리, 배경 이음매, 크기 문제를 겪었습니다. 가장자리 픽셀을 복제하고 그림 크기를 측정하는 방식으로 바꿔 변환 스크립트를 저장소에 남겼습니다.
-
안드로이드를 만들며 9 — 공유 QR을 스토어 주소에서 App Links로 바꾸기
공유 QR에 스토어 주소가 들어 있어 앱을 설치한 사람도 스토어를 거쳐야 했습니다. QR을 자체 도메인으로 바꾸고 앱의 경로 선언, 도메인 검증, 웹의 스토어 이동을 연결했습니다.
-
안드로이드를 만들며 8 — MainActivity의 생명주기 처리를 Compose로 옮기기
MainActivity에서 결제와 인앱 업데이트의 생명주기를 직접 처리하고 있었습니다. AppLifecycleManager로 관찰 코드를 옮겨 등록과 해제를 함께 두고, 콜백이 최신 게이트를 참조하도록 정리했습니다.
-
안드로이드를 만들며 7 — 열세 개 콜백을 CalculatorAction으로 묶기
계산기 화면에 행동을 추가할 때마다 화면 함수, 호출부, ViewModel 연결을 함께 고쳐야 했습니다. 열세 개 콜백을 sealed interface 기반 액션으로 묶고 AppShell의 라우팅도 분리했습니다.
-
안드로이드를 만들며 6 — Room과 DataStore를 AppRepository로 묶기
목록은 Room에, 설정은 DataStore에 저장하면서 화면이 두 저장 방식을 알 필요는 없었습니다. AppRepository가 상태를 합쳐 전달하도록 정리하고, 기존 키와 JSON 마이그레이션의 호환성을 확인했습니다.
-
안드로이드를 만들며 5 — Hilt·ViewModel·Navigation을 정리한 하루
테스트 트랙에 올린 앱의 의존성 주입과 화면 전환을 정리했습니다. Hilt를 도입하고 AppViewModel을 다섯 역할로 나눴으며, Navigation으로 기존 전환 연출을 옮겼습니다.
-
안드로이드를 만들며 4 — 입력 검증 결과를 ValidInputs로 전달하기
단가 0이 오류 없이 계산에서 빠지고 목표 평단가 칸은 검증을 건너뛰었습니다. 검증 결과를 유효·미완성·오류로 나누고, 계산 함수가 ValidInputs만 받도록 바꿨습니다.
-
안드로이드를 만들며 3 — strings.xml의 줄바꿈이 공백으로 바뀐 이유
strings.xml에 두 줄로 적은 안내가 화면에서는 한 문장으로 붙었습니다. 네 문자열과 열한 언어를 수정하고, 실제 줄바꿈이 들어간 자원을 찾는 검사를 추가했습니다.
-
안드로이드를 만들며 2 — 라이트 모드에서 사라진 삼각형 꼭지
셀렉트 목록 위의 삼각형 꼭지가 라이트 모드에서 보이지 않았습니다. elevation을 높여도 경계가 드러나지 않아 두 빗변에만 윤곽선을 그리고 테마별 색을 토큰으로 관리했습니다.
-
안드로이드를 만들며 1 — 비워 둔 Typography 슬롯에 들어간 기본 글꼴
Material3의 Typography 슬롯 열다섯 중 넷을 정의하지 않았더니 화면 일부에 기본 글꼴이 적용됐습니다. 모든 슬롯을 Pretendard로 채우고, 슬롯 수와 디자인의 글자 크기 단계를 구분했습니다.