Files
sodalive-android/docs/plan-task/20260515_XML디자인토큰리소스추가.md

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 값 확인
  • AC2: red_50부터 red_400, green_50부터 green_400까지 Semantic Color 토큰이 존재한다.
    • QA: colors.xml에서 이름과 hex 값 확인
  • AC3: gray_50부터 gray_900까지 10개 Gray Color 토큰이 존재한다.
    • QA: colors.xml에서 이름과 hex 값 확인
  • AC4: spacing 11개와 radius 3개 dimen 토큰이 존재한다.
    • QA: dimens.xml에서 이름과 dp 값 확인
  • AC5: 기존 XML 레이아웃, Kotlin 코드, Compose 파일은 변경하지 않는다.
    • QA: 변경 파일 목록에서 리소스/문서 외 변경이 없는지 확인
  • AC6: 리소스 빌드 검증을 수행한다.
    • QA: ./gradlew :app:assembleDebug

검증 기록

  • 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.xml
      • rg -n '<dimen name="(spacing_16|spacing_48|radius_8|radius_14)">' app/src/main/res/values
      • apply_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.xml
      • rg -n '<dimen name="(spacing_[0-9]+|radius_[0-9]+)">' app/src/main/res/values/dimens.xml
      • lsp_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:assembleDebugBUILD SUCCESSFUL로 완료됐다.
      • 빌드 중 기존 Kotlin deprecation/unchecked cast warning은 출력됐지만 이번 XML 리소스 추가와 무관하며 빌드는 성공했다.