스크린샷과 에셋10 분 읽기

테마 아이콘이 통 사각형이었습니다. lint은 통과했습니다

모노크롬 레이어는 색이 아니라 알파만 쓰입니다. 전경에 배경 정사각형이 깔려 있으면 칸과 무늬가 사라진 통 사각형이 되고, 태그가 있다는 사실만으로는 아무것도 보장되지 않습니다. 17개 앱 전수 감사.

#android#screenshots#verification#methodology#gotchas
개념 도식: 통 사각형 · 거의 빈 원 · 정상 무늬 세 가지 모노크롬 결과와 동일한 lint 통과 표시
글 내용을 요약한 개념 도식.

안드로이드 테마 아이콘(모노크롬 레이어) 경고를 닫는 일입니다. "자산 작업"으로 미뤄 두기 쉽고, 대충 하면 브랜드가 깨집니다. 한 앱에서 절차를 만들고 17개 앱 전수로 돌렸습니다.

질문 하나 드리겠습니다. <monochrome> 태그가 있으면 테마 아이콘이 제대로 나온다고 믿으십니까? 그 태그는 어디를 가리키는지만 말합니다.

1. 모노크롬 레이어는 알파만 씁니다

색은 쓰이지 않습니다. 시스템이 자기 색으로 칠합니다.

그래서 전경 PNG에 배경 정사각형이 불투명하게 깔려 있으면(플릿의 흔한 형태) 그대로 쓸 때 칸과 무늬가 사라진 통 사각형이 됩니다. 실측:

면적 44.4% (통 사각형) · 가운데 행의 칠해진 구간 1개 (칸 소멸)
안전 영역(지름 66dp 원) 밖 픽셀 28,251개 — 가장 먼 곳 50.9dp

<monochrome>아예 안 넣어도 결과가 같습니다. 시스템이 전경을 자동 변환합니다. 즉 태그를 넣는 행위 자체는 아무것도 바꾸지 않습니다.

2. 안전 영역은 사각형이 아니라 원입니다

지름 66dp 원입니다. bbox를 21~87dp 안에 넣는 것으로는 부족합니다.

정사각 무늬는 대각선이 걸립니다. 폭 56dp 격자의 대각선은 79dp라 원형 마스크에서 모서리가 잘립니다. 첫 판이 그랬고 검수 렌더로 잡았습니다. 폭이 아니라 대각선을 맞춰야 합니다.

3. 전수 실측에서 틀린 방향이 두 가지로 갈렸습니다

  • 통 사각형 쪽(전경에 배경 정사각형): 5개 앱. 면적 44%, 무늬 소멸.
  • 거의 빈 원 쪽: 1개 앱. <monochrome>이 전경을 가리켰고 그 전경이 투명 배경에 작은 요소 넷뿐이라 **면적 1.2%**였습니다. 속성은 멀쩡히 있었으니 lint도 통과했습니다. 이건 전체를 키우면 안 되고(배치가 이미 원을 채웁니다) 각 요소를 제자리에서 키웁니다(2.2배 → 5.6%).

전경을 재사용해도 문제없는 경우가 있습니다. 투명 배경 실루엣이고 내용이 안전 영역 안이면 괜찮습니다. 다만 나중에 전경에 배경을 넣으면 조용히 깨지는 구조입니다.

같은 배치의 180 캔버스에 60 그림이 나가 있던 이야기가 자매편입니다. 정의하지 않은 색 슬롯이 스토어 컷에 찍힌 이야기도 같은 계열입니다.

4. 제가 잘못 보고한 것 둘

⚠️ 스캔 경로를 하나만 봐서 잘못 보고했습니다. 버전 한정자가 붙은 디렉터리만 보고 "두 앱은 적응형 아이콘 XML 자체가 없다"고 적었는데, 둘 다 한정자 없는 디렉터리에 두고 있었습니다 (minSdk가 높아 안전한 배치). 두 경로를 다 봐야 합니다.

⚠️ 드로어블을 이름으로 직접 로드해 검사하면 배선을 검사하지 않습니다. <monochrome>이 어디를 가리키든 통과합니다. 음성 대조가 그대로 통과해서 알았습니다.

적응형 아이콘을 통해 꺼내야 합니다.

(ctx.getDrawable(R.mipmap.ic_launcher) as AdaptiveIconDrawable).monochrome

둥근 아이콘도 따로 봐야 합니다. 한쪽만 넣으면 기기별로 갈립니다.

5. 당신이라면 무늬가 없는 일러스트 아이콘을 어떻게 하시겠습니까

모노크롬은 알파만 씁니다. 원본이 전면 일러스트라 색이 10만 종이면 추출할 형태가 없습니다.

  • (a) 실루엣만 뽑아 쓴다
  • (b) 임계값을 조절해 어떻게든 추출한다
  • (c) 그 아이콘의 모티프로 새로 그린다

(a)는 통 사각형이 됩니다. (b)는 임계를 어디에 두든 무늬가 안 살아납니다. 답은 (c)였습니다. 추출이 불가능한 형태가 있다는 걸 인정하는 게 절차의 일부입니다.

6. 추출 방식이 아이콘마다 다릅니다

원본 형태 방식 함정
단색 배경 + 무늬 배경색과의 색거리 질감 종이면 임계를 250까지 올려야
그라데이션 배경 밝고 채도 낮은 쪽(흰색) 추출 단색 차감은 그라데이션 먼 끝을 "다른 색"으로 읽어 사각형을 통째로 칠한다
기하 도형 좌표를 연결 요소로 실측 → 벡터 재구성 피치·크기·라운드·회전까지 뽑아야 무늬가 산다
전면 일러스트 ❌ 추출 불가 → 그린다 색이 10만 종. 아이콘 자신의 모티프로 새로 그렸다
투명 배경 + 작은 요소 요소만 제자리 확대 전체 확대는 안전 영역을 넘긴다

⚠️ floor와 램프를 분리해야 합니다. 하나로 두면 색이 중간인 요소가 반투명으로 남아 두 톤이 됩니다. 한 앱의 내부가 62% 알파로 떠서 마커가 회색 속을 가진 링처럼 보였습니다.

7. 원본 자산 결함이 확대됩니다

한 앱의 상단 초승달은 왼쪽이 수직으로 잘려 있었습니다(10×26 vs 17×26 · 19×26). 라이브 아이콘에도 그대로 나가 있었고 작아서 안 보였습니다.

모노크롬은 2.2배로 키우므로 도드라집니다. 지어내지 않고 그 요소를 뺐습니다. 원본에 없는 것을 그려 넣으면 그건 복원이 아니라 창작입니다.

8. 계측 테스트 네 가지와 음성 대조 둘

  1. 면적 상·하한(통 사각형과 빈 원을 양쪽에서 막는다)
  2. 66dp 원 안 전수
  3. 가운데 행의 칠해진 구간 수(칸이 붙었는지)
  4. 둥근 아이콘도 같은 레이어인지

음성 대조 둘(전경 PNG로 바꿔치기 · <monochrome> 줄 제거)에서 각각 3건씩 빨간불이 떠야 합니다.

전수 감사 방법은 <monochrome android:drawable="…">를 파싱해 실제 자산을 찾아 면적과 66dp 원을 재는 것입니다. 참조가 벡터면 렌더가 필요합니다. <monochrome>이 있다는 것만으로는 아무것도 보장하지 않습니다.

자가진단 3가지

  1. 테마 아이콘을 실제로 렌더해 본 적 있습니까? 태그 존재 검사는 통 사각형도 통과시킵니다.
  2. 상·하한을 둘 다 검사합니까? 면적 하한만 있으면 통 사각형이, 상한만 있으면 빈 원이 통과합니다.
  3. 검사가 배선을 봅니까, 자산을 봅니까? 드로어블을 이름으로 로드하면 배선은 안 봅니다.

솔직한 부분

이 감사에서 제가 두 번 틀렸는데, 둘 다 검사 범위의 문제였습니다. 한 번은 디렉터리 하나만 봤고, 한 번은 자산만 보고 배선을 안 봤습니다. 결함 자체를 못 찾은 적은 없습니다.

그래서 이 글의 교훈은 "모노크롬은 알파만 쓴다"가 아니라 **"검사가 무엇을 안 보는지 먼저 적어라"**에 가깝습니다. 음성 대조가 그걸 대신 알려 줍니다. 두 번 다 음성 대조가 잡았습니다.

지금 딱 하나만 해 보세요. 당신 앱의 테마 아이콘을 실제로 뽑아 검은 원 위에 얹어 보십시오. 무늬가 살아 있는지, 통 사각형인지, 거의 비어 있는지 한 장이면 판정됩니다.

관련 글