안드로이드 스마트 워치 페이스 업로드 시 주의 사항

개요

이전에 소개 했던 스마트 워치용 괘종시계 페이스의 정보를 일부 수정하는 과정에서 이해할 수 없는 이유로 업데이트가 거부되었습니다. 이것에 관해서 알아보겠습니다.

업데이트 거부

초기 버전을 올리고 안내 사항이 있어서 기본 정보 문구를 추가했습니다. 그런데 다음과 같이 업데이트가 거부되었다는 메일이 왔습니다. 원래 있던 내용에서 단순히 문구만 추가했는데 거부되는 것은 납득이 되지 않았습니다.

업데이트 거부 안내 메일 일부 내용
업데이트 거부 안내 메일 일부 내용

거부 사유

세 가지 거부 사유가 있었는데 다음과 같습니다.

  • Wear 스크린샷
    Wear OS 스크린샷이 하나만 등록되어 있어 발생한 것 같았습니다. 최초 업로드 시에 점검해서 막아줄 수 있을 것 같은데 추후 업데이트 과정에서 거부 사유로 나타나는 것은 맞지 않는 것 같았습니다. 스크린샷을 더 등록해서 해결 했습니다.
  • Play 등록정보 설명
    이 사유의 상세 내용 중 이런 내용이 있었습니다. “Play 등록정보 설명에 Wear OS가 언급되어 있지 않습니다.” 앱의 분류가 이미 Wear OS 전용인데 설명에 Wear OS 문구가 없다고 거부 사유가 되는 것이 이상했습니다. 앱 설명에 Wear OS 문구를 넣어서 해결 했습니다. 이것도 최초 등록 시 검사해서 입력되도록 하는 것이 맞다는 생각이 들었습니다.
  • 시계 화면 항상 켜져 있는 화면에서 너무 많은 픽셀이 불이 들어옴
    이 사유는 뭔가 영문으로 된 것을 한글로 기계 번역 했다는 생각이 들었습니다. 아마도 Always On Display 관련한 문제라는 생각이 들었습니다. 시계 배경이 AOD 모드에서도 전부 나타나게 해서 문제가 된 것 같았습니다. AOD 모드일 때 배경이 나타나지 않도록 수정해서 해결 했습니다.

또 다른 거부 사유

문제를 모두 해결했다고 생각하고 다시 업데이트 요청을 했는데 또 거부 되었습니다. [발견된 문제: Wear 스크린샷] 이 거부 사유였고 상세 내용은 “앱의 Wear 스크린샷에 투명한 배경이나 마스킹이 포함되어서는 안 됩니다.” 이었습니다. 배경이 투명한 PNG 파일을 스크린샷으로 올렸는데 이것이 문제가 되었습니다. 투명한 배경을 제거하고 올려서 해결 했습니다. 이것도 스크린샷을 올릴 때 검사해서 미리 알려주는 것이 맞을 것 같은데 납득이 되지 않았습니다.

워치 페이스 관련한 작업을 진행하다 보니 기존 앱 관리 부분과 다르게 혼동이 될 여지가 많은 것 같았습니다. 처음이라 그런 부분도 있을 수 있겠지만 좀 더 명확한 화면 구성이 필요할 것 같았습니다. 개발자가 쓸데없이 시간을 버리지 않도록 미리 검사할 수 있는 부분은 업데이트 요청 전 확인을 할 수 있도록 하면 좋겠다는 생각이 들었습니다.

워치 페이스 관련해서 어려움을 겪으신 분들께 참고가 되었으면 합니다.

안드로이드 스마트 워치용 괘종시계 페이스

개요

안드로이드 기반 스마트 워치를 사용하던 친구가 새로운 것을 구매하면서 써 보라고 주었습니다. 스마트 워치를 처음 써 보았는데 다양하게 디자인을 변경할 수 있는 것이 좋았습니다. 문득 괘종시계 앱의 디자인을 넣었으면 좋겠다는 생각이 들었습니다. 그래서 한번 스마트 워치 페이스를 제작해 보기로 했습니다.

정보 수집

안드로이드 스마트 워치의 페이스를 만드는 방법을 알아보니 이전에는 프로그래밍 방식이었고 지금은 WFF(Watch Face Format) 형식으로 정의해서 제작하는 것으로 변경되었다는 것을 알게 되었습니다. 즉, 프로그램 코드는 전혀 들어가지 않습니다.

개발 도구 선택

필자는 Android Studio 를 이용해서 제작할 계획이었습니다. 자료를 찾는 중에 Watch Face Studio 라는 도구가 있고 꼭 개발자가 아니어도 쉽게 제작할 수 있도록 해 주는 것 같았습니다. 필자는 또 다른 도구를 설치하는 것 보다 원래 사용하던 것으로 작업하는 것이 나을 것 같다는 생각이 들어 Android Studio 로 진행하기로 결정했습니다.

제작

Android Studio 에서 New Project > Wear OS > No Activity 를 선택하여 프로젝트를 생성했습니다. 다른 Wear OS 앱은 모르겠는데 워치 페이스는 Activity 가 없어야 aab 파일을 빌드할 수 있습니다.

Wear OS 프로젝트 생성
Wear OS 프로젝트 생성

프로젝트 구조를 살펴보니 기존 앱과 큰 차이가 없었습니다. 프로그래밍 언어로 작업하는 것이 아니어서 build.gradle 파일에서 프로그램 언어와 관련한 부분을 모두 삭제했습니다.

/res/raw/watchface.xml, /xml/watch_face_info.xml 파일을 새롭게 추가하고 형식에 맞추어 시계의 모양을 정의했습니다.

테스트

Wear OS 에뮬레이터를 설치하고 실행해서 일반 안드로이드 앱처럼 테스트를 진행했습니다. 처음에는 원하는 모양이 정확하게 나타나는지 확인했습니다. 그 다음으로 시침, 분침, 초침의 색상 변경, 배경 변경의 기능을 추가했습니다.

어느 정도 구색이 갖추어 지고 실제 스마트 워치에 올려서 테스트를 진행했습니다. 보여지는 것 자체는 문제가 없었는데 시분초침의 색상 테마 변경, 배경 이미지의 변경이 실제로 반영되지 않는 문제가 있었습니다. 이것은 Wear OS의 버전과 WFF 버전간의 불일치 문제였습니다.

필자가 테스트로 사용한 스마트 워치는 Wear OS 5 였고 이 버전이 작업한 WFF 버전을 제대로 지원하지 못하는 문제였습니다. 기기 연동 앱을 통해 연결된 스마트 워치의 모양을 변경하면 제대로 반영이 되므로 그것으로 만족할 수 밖에 없었습니다.

빌드 시 문제

에뮬레이터와 실제 기기에서 문제가 없어서 당연히 빌드에는 문제가 없을 것이라 생각했습니다. 그러나 처음 보는 오류가 많이 발생했습니다. 다른 오류들은 비교적 쉽게 해결이 가능했습니다. 그러나 다음 오류 메시지 해결은 어려웠습니다.

Watch face base module cannot have any components and can only have resources.

결론부터 말하면 이 오류는 AndroidManifest.xml 파일에 activity 가 정의되어 발생한 문제였습니다. 필자가 정의한 AndroidManifest.xml 파일에는 activity 가 없어서 문제 해결에 시간이 많이 소요되었습니다. 이 오류를 해결하는 방법은 하단의 Merged Manifest 탭을 선택해서 activity 가 있는지 확인하고 관련된 라이브러리나 설정을 해제하면 됩니다.

Merged Manifest 탭 확인
Merged Manifest 탭 확인

WFF 형식을 검사해 주는 도구도 있으니 반드시 문제가 없는지 확인 후 빌드해야 합니다. wff-validator.jar 이름으로 자료를 찾아보면 됩니다.

구글 플레이 업로드

기본 정보는 다른 일반 앱들과 비슷한데 폼 팩터를 등록해야 한다는 점이 다릅니다. 테스트 및 출시 > 고급 설정 > 폼 팩터 탭 선택하고 폼 팩터 추가 링크를 클릭합니다. Wear OS를 선택하고 진행하면 추가 됩니다.

Wear OS 폼 팩터 추가 된 화면
Wear OS 폼 팩터 추가 된 화면

작업 시 항상 Wear OS 전용이 선택되어 있는지 확인하시기 바랍니다. 필자는 아무 생각 없이 진행하다가 휴대전화, 태블릿… 이것으로 선택된 상태라는 것을 나중에 알았습니다.

Wear OS 전용 선택
Wear OS 전용 선택

개인적으로 Wear OS 관련 설정이 숨어 있어서 혼동이 많이 된다는 생각이 들었습니다. 구글 측에서 이것을 좀 개선해 주었으면 좋겠습니다.

안드로이드 스마트 워치용 괘종시계 페이스
안드로이드 스마트 워치용 괘종시계 페이스

느낀 점

안드로이드 스마트 워치용 페이스를 Android Studio 로 제작하는 데 관련한 정보가 부족하다는 것을 많이 느꼈습니다. 자료를 찾아보거나 AI 도움을 받아보면 이전 프로그래밍 방식으로 제작했을 때의 해결책만 있는 경우가 많았습니다. 그래도 WFF 정의 방식으로 일반 사용자들도 쉽게 만들 수 있게 전환한 점은 활발한 생태계를 위해서 좋은 일이라 생각되었습니다.

처음이라서 헤메이기도 하고 바보 같은 실수도 했지만 또 다른 페이스를 만들 수 있는 기반이 되었다고 생각합니다.

다음 주소에서 확인하실 수 있습니다. 유료 워치 페이스 입니다.

https://play.google.com/store/apps/details?id=jaeyoung.kim.grandfatherclockface