워치 페이스 형식 설정

이 가이드에는 워치 페이스 형식을 사용하여 시계 화면을 구성하는 데 필요한 도구에 관한 단계, 프로젝트 구조에 관한 몇 가지 제안사항, 해당 구조를 만드는 도구를 적용하는 단계별 안내가 포함되어 있습니다.

기본 요건

워치 페이스 형식을 사용하기 위한 개발 환경을 준비하려면 다음 설정 단계를 완료하세요.

  1. Android 13(API 수준 33) 이상용 SDK를 설치합니다. SDK에는 aapt2android.jar를 비롯한 다른 필수 도구가 포함되어 있습니다.
  2. bundletool 명령줄 프로그램을 설치합니다.
  3. 시계 화면 디자인이 포함된 앱의 디버그 버전에 서명합니다. Android 스튜디오에서 서명된 Android App Bundle을 생성하거나 디버그 빌드에 수동으로 서명할 수 있습니다.

프로젝트 구조

워치 페이스 형식을 사용하는 맞춤 시계 화면을 만들 때 맞춤 시계 화면 파일이 포함된 Android App Bundle은 Wear OS 앱 로직이 포함된 Android App Bundle과 완전히 분리되어야 합니다. Google Play를 비롯한 일부 앱 스토어에서는 Wear OS 로직과 맞춤 시계 화면을 둘 다 포함하는 Android App Bundle을 업로드할 수 없습니다.

시계 화면 번들 만들기

시계 화면 파일이 포함된 Android App Bundle을 만들려면 다음 섹션에 나온 단계를 완료하세요.

워치 페이스 형식 사용 선언

새 앱의 매니페스트 파일(AndroidManifest.xml)에 워치 페이스 형식의 용도를 나타내는 애플리케이션 속성을 추가합니다.

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest ...>
    <application ...>
        <property
            android:name="com.google.wear.watchface.format.version"
            android:value="1" />
    </application>
</manifest>

시계 화면 메타데이터 선언

앱의 res/xml 리소스 디렉터리에 watch_face_info.xml이라는 새 파일을 만듭니다. 여기에서 시계 화면의 메타데이터를 정의합니다.

<?xml version="1.0" encoding="utf-8"?>
<WatchFaceInfo>
    <!-- Only "Preview" is required. -->
    <Preview value="@drawable/watch_face_preview" />
    <Category value="CATEGORY_EMPTY" />
    <AvailableInRetail value="true" />
    <MultipleInstancesAllowed value="true" />
    <Editable value="true" />
</WatchFaceInfo>

이 파일의 필드는 다음 세부정보를 나타냅니다.

Preview
시계 화면의 미리보기 이미지가 포함된 드로어블을 참조합니다.
Category

시계 화면의 카테고리를 정의합니다. 문자열이거나 문자열 참조(예: @string/ref_name)여야 합니다. 각 기기 제조업체는 고유한 시계 화면 카테고리 집합을 정의할 수 있습니다.

기본값은 empty_category_meta로, 이 시계 화면을 시계 화면 선택 도구 뷰 하단에 있는 다른 '빈 카테고리' 시계 화면과 함께 그룹화합니다.

AvailableInRetail

기기의 소매 데모 모드에서 시계 화면을 사용할 수 있는지 여부입니다. 불리언 값이거나 불리언 값 참조(예: @bool/watch_face_available_in_retail)여야 합니다.

기본값은 false입니다.

MultipleInstancesAllowed

시계 화면에 즐겨찾기가 여러 개 있을 수 있는지 여부입니다. 불리언 값이거나 불리언 값 참조(예: @bool/watch_face_multiple_instances_allowed)여야 합니다.

기본값은 false입니다.

Editable

시계 화면을 수정할 수 있는지 여부입니다. 즉, 시계 화면에 설정 또는 하나 이상의 고정되지 않은 정보 표시가 있습니다. 즐겨찾기 목록에서 시계 화면의 수정 버튼을 표시하거나 숨기는 데 사용됩니다.

기본값은 false입니다.

시계 화면 이름 선언

앱의 매니페스트 파일(AndroidManifest.xml)에서 android:label 속성을 시계 화면의 이름으로 설정합니다.

<application android:label="@string/watch_face_name" >

시계 화면 모양 지원 선언

앱의 res/xml 리소스 디렉터리에서, 지원되는 시계 화면 모양 집합을 선언합니다.

<WatchFaces>
    <!-- The default shape is "CIRCLE". -->
    <WatchFace shape="CIRCLE" width="300" height="300"
               file="@raw/watchface"/>
    <WatchFace shape="CIRCLE" width="450" height="450"
               file="@raw/watchface_large_circle"/>
    <WatchFace shape="RECTANGLE" width="380" height="400"
               file="@raw/watchface_rectangle"/>
</WatchFaces>

시계 화면 세부정보 선언

앱의 res/raw 리소스 디렉터리에서 시계 화면 모양 지원을 선언할 때 사용되는 file 속성 값에 상응하는 파일을 만듭니다. 여기에서 시계 화면 모양과 각 시계 화면 모양의 동작을 정의합니다.

이 페이지의 예를 사용하면 원시 XML 파일은 다음과 같습니다.

  • res/raw/watchface.xml
  • res/raw/watchface_large_circle.xml
  • res/raw/watchface_rectangle.xml

루트 요소는 항상 WatchFace입니다.

<WatchFace width="450" height="450" shape="CIRCLE">
    <!-- Remainder of your Watch Face Format definition here. -->
    <!-- If this file defines a watch face for a circular device shape, place
         resources used in this file in the "/res/drawable-nodpi" directory. -->
    <!-- If this file defines a watch face for a rectangular or other
         non-circular shape, place resources ued in this file in the
         "/res/drawable-notround-nodpi" directory. -->
</WatchFace>

시계 화면 게시자 식별(선택사항)

필요한 경우 앱의 매니페스트 파일에서 시계 화면의 게시자 또는 사용 중인 도구 이름과 버전을 식별하는 데 사용할 수 있는 임의의 문자열을 선언하세요.

<application ...>
    ...
    <property
        android:name="com.google.wear.watchface.format.publisher"
        android:value="{toolName}-{toolVersion}" />
</application>

시계 화면의 App Bundle 빌드

시계 화면이 포함된 Android App Bundle을 빌드하려면 bundletool을 사용하세요. bundletool을 사용하여 앱을 빌드하는 방법을 자세히 알아보세요.

게시를 위해 App Bundle을 준비하는 방법은 GitHub 샘플과 Google Play에 제출하기 전에 정확성을 확인하는 검사기 도구를 참고하세요.