5.4 KiB
XML 디자인 토큰 리소스 추가
작업 목표
- XML 레이아웃에서 재사용할 수 있는 색상, Spacing, Radius 디자인 토큰 리소스를 추가한다.
- 구현 범위는 XML 리소스 추가로만 한정한다.
구현 계획
Task 1: Color 토큰 리소스 추가
Files:
-
Modify:
app/src/main/res/values/colors.xml -
Step 1: RED - 신규 color 토큰 부재 확인
Run: rg -n '<color name="(soda_400|red_400|green_400|gray_900)">' app/src/main/res/values/colors.xml
Expected: 토큰 추가 전에는 매칭 결과가 없어 실패한다.
- Step 2: Primary, Semantic, Gray color 토큰 추가
colors.xml의 기존 리소스 하단에 요청된 soda_*, red_*, green_*, gray_* color 리소스를 추가한다.
- Step 3: GREEN - 대표 color 토큰 확인
Run: rg -n '<color name="(soda_400|red_400|green_400|gray_900)">' app/src/main/res/values/colors.xml
Expected: soda_400, red_400, green_400, gray_900이 모두 조회된다.
Task 2: Spacing/Radius dimen 리소스 추가
Files:
-
Create:
app/src/main/res/values/dimens.xml -
Step 1: RED - 신규 dimen 토큰 부재 확인
Run: rg -n '<dimen name="(spacing_16|spacing_48|radius_8|radius_14)">' app/src/main/res/values
Expected: 토큰 추가 전에는 매칭 결과가 없어 실패한다.
- Step 2: Spacing과 Radius dimen 토큰 추가
dimens.xml을 생성하고 요청된 spacing 11개와 radius 3개를 dp 값으로 추가한다.
- Step 3: GREEN - 대표 dimen 토큰 확인
Run: rg -n '<dimen name="(spacing_16|spacing_48|radius_8|radius_14)">' app/src/main/res/values/dimens.xml
Expected: spacing_16, spacing_48, radius_8, radius_14가 모두 조회된다.
Task 3: 리소스 검증 및 문서 기록
Files:
-
Modify:
docs/plan-task/20260515_XML디자인토큰리소스추가.md -
Step 1: XML LSP 진단 실행
Run: lsp_diagnostics(app/src/main/res/values/colors.xml) 및 lsp_diagnostics(app/src/main/res/values/dimens.xml)
Expected: 새 XML 리소스에 새 오류가 없다. XML LSP가 환경에 없으면 그 사실을 검증 기록에 남긴다.
- Step 2: 디버그 빌드 실행
Run: ./gradlew :app:assembleDebug
Expected: BUILD SUCCESSFUL
- Step 3: 검증 기록 누적
문서 하단 검증 기록에 실행한 명령, 결과, 빌드 성공 여부를 한국어로 기록한다.
체크리스트
- AC1:
soda_50부터soda_900까지 10개 Primary Color 토큰이 존재한다.- QA:
colors.xml에서 이름과 hex 값 확인
- QA:
- AC2:
red_50부터red_400,green_50부터green_400까지 Semantic Color 토큰이 존재한다.- QA:
colors.xml에서 이름과 hex 값 확인
- QA:
- AC3:
gray_50부터gray_900까지 10개 Gray Color 토큰이 존재한다.- QA:
colors.xml에서 이름과 hex 값 확인
- QA:
- AC4: spacing 11개와 radius 3개 dimen 토큰이 존재한다.
- QA:
dimens.xml에서 이름과 dp 값 확인
- QA:
- AC5: 기존 XML 레이아웃, Kotlin 코드, Compose 파일은 변경하지 않는다.
- QA: 변경 파일 목록에서 리소스/문서 외 변경이 없는지 확인
- AC6: 리소스 빌드 검증을 수행한다.
- QA:
./gradlew :app:assembleDebug
- QA:
검증 기록
- 2026-05-15
- 무엇/왜/어떻게: 구현 전 PRD와 계획 문서를 작성했다. 사용자 지시에 따라 범위는 XML 리소스 추가로만 제한했다.
- 실행 명령/도구:
read(app/src/main/res/values/colors.xml)read(app/src/main/res/values/themes.xml)rg --files app/src/main/res/values | rg 'dimens|spacing|radius|shape'
- 결과:
- 기존 프로젝트는 XML 리소스 중심이며 Compose 사용 흔적이 확인되지 않았다.
- 기존
dimens.xml은 없어 새 파일 생성 대상으로 정리했다.
- 2026-05-15
- 무엇/왜/어떻게: TDD 방식으로 토큰 추가 전 대표 color/dimen 조회가 실패함을 확인한 뒤, XML 리소스만 추가했다.
- 실행 명령/도구:
rg -n '<color name="(soda_400|red_400|green_400|gray_900)">' app/src/main/res/values/colors.xmlrg -n '<dimen name="(spacing_16|spacing_48|radius_8|radius_14)">' app/src/main/res/valuesapply_patch
- 결과:
- 토큰 추가 전에는 대표 color/dimen 토큰 조회 결과가 없었다.
colors.xml에는 요청된 color 토큰 30개를 추가했다.dimens.xml에는 요청된 spacing 토큰 11개와 radius 토큰 3개를 추가했다.
- 2026-05-15
- 무엇/왜/어떻게: 추가된 XML 리소스가 조회되고 Android 리소스 빌드가 가능한지 검증했다.
- 실행 명령/도구:
rg -n '<color name="(soda_[0-9]+|red_[0-9]+|green_[0-9]+|gray_[0-9]+)">' app/src/main/res/values/colors.xmlrg -n '<dimen name="(spacing_[0-9]+|radius_[0-9]+)">' app/src/main/res/values/dimens.xmllsp_diagnostics(app/src/main/res/values/colors.xml)lsp_diagnostics(app/src/main/res/values/dimens.xml)./gradlew :app:assembleDebug
- 결과:
- 요청된 color 토큰 30개와 dimen 토큰 14개가 모두 조회됐다.
- XML LSP는 현재 환경에 설정되어 있지 않아 실행 불가(
No LSP server configured for extension: .xml)였다. ./gradlew :app:assembleDebug는BUILD SUCCESSFUL로 완료됐다.- 빌드 중 기존 Kotlin deprecation/unchecked cast warning은 출력됐지만 이번 XML 리소스 추가와 무관하며 빌드는 성공했다.