Tagged
#android
이 주제로 쓴
18개의 글
-
두 번째 앱 출시기 3 — 세 저장소가 나눠 든 딥링크 - /app/<제품> 단일 규칙과 assetlinks
QR 코드 하나를 찍었을 때 앱이 있으면 즉시 실행되고, 없으면 소개 웹을 거쳐 스토어로 가야 합니다. 안드로이드 앱, 브랜드 홈페이지, 도메인 문패(assetlinks) 세 저장소가 /app/<제품> 단일 문법으로 질서를 찾은 여정입니다.
-
두 번째 앱 출시기 2 — 파는 것이 바뀌면 이름도 따라갑니다 - PRO BM과 도구 전면 개방
서명, 페이지 순서 편집, 병합 같은 핵심 기능들을 유료 결제 뒤로 잠가두려다 생각을 바꿨습니다. 모든 도구를 전면 무료로 열고, PRO 결제는 '광고 제거 + 초고화질 내보내기'로 단순화했습니다. 파는 것이 바뀌면 화면의 말도 바뀌어야 합니다.
-
두 번째 앱 출시기 1 — 한글이 검색되는 PDF 만들기 - OCR 인식 좌표와 글자층
첫 번째 앱 Stock Calculator에 이어 두 번째 앱 Pocket PDF를 만들었습니다. 이미지를 PDF로 변환하면서 텍스트를 인식해 투명 글자층으로 얹는 핵심 엔진 개발과 한글 유니코드 문제를 해결한 과정을 정리합니다.
-
안드로이드를 만들며 10 — 스퀴클은 원이 아니에요 - 앱 아이콘을 세 번 틀리고 굽는 법
둥근 타일 원본을 적응형 아이콘에 넣는 단순한 일에서 세 번 틀렸습니다. 모서리가 두 겹이 되고, 검은 초승달이 남고, 아이콘이 제 칸의 절반도 못 채웠어요. 틀릴 때마다 배운 건 하나였습니다 — 짐작하지 말고 그림에게 물어라.
-
안드로이드를 만들며 9 — QR을 찍은 사람이 앱이 있는데도 스토어로 갔어요
공유 그림의 QR이 스토어 주소를 직접 담고 있었습니다. 앱을 이미 깐 사람도 찍으면 스토어로 떨어졌어요. 주소를 우리 도메인으로 바꾸고 App Links를 세우면 링크 하나가 두 경우를 다 받습니다 — 그 구현을 처음부터 끝까지 적었습니다.
-
조용히 실패하는 것들 6 — «검색되는 PDF»가 한글은 한 글자도 검색하지 못했어요
홈 화면은 «검색되는 문서로 만들어 드려요»라고 말하고 있었습니다. 그런데 코드 깊은 곳에는 «코드값 256 위는 공백으로»라는 한 줄이 있었어요. 한글은 U+AC00부터 시작합니다. 주 시장의 언어가 통째로 공백이 되고 있었습니다.
-
안드로이드를 만들며 8 — MainActivity 다이어트 - 생명주기를 Compose 트리로 내렸어요
결제와 인앱 업데이트가 Activity의 생명주기를 요구해서 MainActivity가 온갖 SDK의 진입점이 돼 있었어요. onResume·onDestroy 오버라이드를 걷어내고 그 책임을 컴포저블 하나로 내린 이야기입니다.
-
안드로이드를 만들며 7 — 화면이 콜백 열세 개를 들고 있었어요 - MVI로 입구를 하나로
상태 끌어올리기를 하다 보니 화면 컴포저블의 시그니처가 끝없이 길어졌어요. 버튼 하나를 더할 때마다 화면·껍데기·ViewModel 세 곳을 고쳐야 했습니다. 사용자의 행동을 sealed interface 하나로 묶어 입구를 하나로 줄인 이야기예요.
-
안드로이드를 만들며 6 — 저장소가 둘인데 화면은 하나로 봅니다 - AppRepository와 SSOT
목록은 Room이, 설정값은 DataStore가 들고 있어요. 화면이 그 둘을 다 알아야 할 이유는 없었습니다. combine으로 하나의 Flow로 묶어 단일 진실 공급원을 세운 이야기, 그리고 옛 저장본과 맺은 약속에 대한 이야기예요.
-
안드로이드를 만들며 5 — 하루에 구조를 세 번 바꿨어요 - Hilt · Navigation · 걷어낸 것들
돌아가는 앱을 스토어에 올리고 나서, 하루를 통째로 구조에 썼어요. 손으로 만든 DI를 Hilt로, 손으로 만든 화면 전환을 Navigation으로, 그리고 이미 낡은 것들을 걷어냈습니다.
-
안드로이드를 만들며 4 — 검증은 한 번, 증명은 타입이 들고 다닙니다
같은 날 버그 둘이 나왔어요. 하나는 같은 규칙이 두 곳에 다르게 적혀 있었고, 하나는 아무도 검증하지 않는 칸이 있었습니다. 값을 맞추는 데서 멈추면 셋째 버그가 옵니다.
-
안드로이드를 만들며 3 — aapt는 줄바꿈을 공백 하나로 접습니다
strings.xml에 두 줄로 적은 문장이 화면에서는 띄어쓰기 하나로 이어 붙었어요. 네 문자열이 그랬고, 번역된 열한 언어가 똑같이 그랬습니다.
-
안드로이드를 만들며 2 — 위를 향한 꼭지는 그늘로 설 수 없어요
셀렉트 위에 붙인 삼각형 꼭지가 라이트 모드에서 사라졌어요. elevation을 아무리 올려도 살아나지 않았습니다. 값의 문제가 아니라 방향의 문제였어요.
-
안드로이드를 만들며 1 — 비워둔 타이포 슬롯은 남의 글꼴이 들어오는 문이었어요
Material3의 Typography 슬롯 열다섯 중 열하나만 정의하고 넷을 비워뒀어요. 그런데 비운 넷은 없는 칸이 되지 않았습니다. Roboto로 채워졌고, 화면은 그 넷을 실제로 부르고 있었어요.
-
첫 앱 출시기 4 — Play Store에 올리기 - 서명, 등록정보, 콘솔에 안 가는 법
업로드 키와 Play 앱 서명, 되돌릴 수 없는 versionCode, targetSdk 마감, 필수 고지들. 그리고 Gradle 명령 한 줄로 올리기까지 — 두 번 막혔던 권한 오류와, 스크린샷 55장이 통째로 빠졌던 이야기입니다.
-
첫 앱 출시기 3 — AdMob 붙이기 - 광고 세 종류와 동의, 계정 정지를 피하는 법
앱 ID를 매니페스트에 넣는 것부터 EEA 동의 폼까지. 배너·전면·보상형 세 자리를 붙이면서 실제로 막혔던 곳들과, 테스트 광고를 실수로 출시하지 않기 위해 빌드에 맡긴 장치를 이야기합니다.
-
첫 앱 출시기 2 — Figma 대신 HTML 목업으로 시작했고, 나중에 놓아줬어요
코드보다 목업이 먼저였는데, 그게 Figma가 아니라 HTML 한 장이었어요. 목업의 역할은 처음부터 빠른 시작이었습니다. 그 역할이 끝나는 자리를 어떻게 알아봤고, 어떻게 놓아줬는지까지 적어요.
-
첫 앱 출시기 1 — 무엇을 만들었고, 무엇을 안 만들었나
첫 커밋이 8월 9일, 테스트 트랙 게시가 8월 21일이었어요. 2주 동안 안드로이드 앱 하나를 만들어 Play 콘솔에 올리기까지를 네 편으로 나눠 씁니다. 첫 편은 무엇을 만들었나, 그리고 그보다 중요했던 무엇을 안 만들기로 했나입니다.