본문 바로가기
개발/Android

[Android] Android TV와 개발 주의사항

by JhDroid 2021. 1. 19.
728x90

Android TV?

  • Android TV는 구글이 개발한 스마트 TV용 안드로이드 운영체제입니다.
  • 스마트폰, 태블릿용 앱과 동일한 아키텍처를 사용합니다.
  • 셋톱박스에 따라 스마트폰 용 Android OS를 기반으로 한 셋톱박스와 Android TV OS를 기반으로 한 셋톱박스로 나뉩니다. (제조사에 따라 다릅니다.)
  • 개발자 가이드 : https://developer.android.com/training/tv?hl=ko

 

스마트폰 용 Android OS와 Android TV OS의 차이

  • Google Play Store에서 사용자에게 표시되는 앱이 서로 다릅니다.
    • Manifest intent-filter에 LEANBACK_LAUNCHER를 포함한 앱만이 Android TV OS의 Google Play Store앱에 표시됩니다.
    • Android TV OS를 기반으로한 셋톱박스를 사용 중이라면 스마트폰 용 앱을 Play Store에서 설치할 수 없습니다.

 

  • Android TV 앱의 UI는 Leanback 라이브러리를 사용합니다.(선택사항)
    • Leanback 라이브러리를 사용하지 않고 개발이 가능하지만 난이도가 올라가지 않을까 생각합니다..

 

  • Android TV는 banner를 추가해야 합니다.
    • banner는 기존 Android에서 icon과 동일한 것으로 Android TV OS의 홈 화면에서 앱 아이콘이 됩니다.
    • 스마트폰 용 Android OS를 탑재한 셋톱박스도 지원하려면 icon도 추가하는게 좋습니다.
      • 등록하지 않으면 앱을 설치해도 홈 화면에 나타나지 않습니다.

 

Android TV 앱 개발 시 주의사항

 

  • Manifest에서 필수로 추가, 설정해야 하는 내용이 있습니다.
    <!--필수-->
    <uses-feature
        android:name="android.hardware.touchscreen"
        android:required="false" />
        
    <!--선택-->
    <uses-feature
        android:name="android.software.leanback"
        android:required="true" />
    
    <!--banner 필수-->
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:banner="@drawable/app_icon_your_company"
        android:supportsRtl="true"
        android:theme="@style/Theme.Jhdroidtvlistlowsample">
        <activity
            android:name=".MainActivity"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> <!--필수-->
            </intent-filter>
        </activity>
    </application>
  • Manifest에서 설정이 필요한 내용
    • touchscreen사용 설정을 false로 설정하지 않으면 TV 앱으로 표시되지 않습니다.
    • banner를 추가해야 합니다.
    • intent-filter에 LEANBACK_LAUNCHER 설정이 필요합니다.
    • leanback의 경우 false로 설정해도 TV 앱으로 배포가 가능하지만 true로 설정하면 앱이 LeanbackUI를 사용하는기기에서만 실행됩니다.

 

  • targetSdkVersion을 Android 5.0(API 21) 이상으로 설정해야 합니다.
    • 새로운 Android TV 프로젝트를 만들면 자동으로 설정되어 있습니다.

 

  • 모든 UI 요소가 D 패드(리모컨)나 게임 컨트롤러(TV 게임)에서 작동되어야 합니다.
    • Leanback 라이브러리를 사용해 UI를 개발했다면 따로 신경 쓰지 않아도 됩니다.

 

  • 배포 시 구글 콘솔에 TV 스크린샷과 배너 이미지를 필수로 추가해야 합니다.
    • Android TV를 지원하려면 TV 스크린샷 1장과 TV 배너 1장을 업로해야 합니다.

 

  • WebView를 사용하면 앱 배포 시 거절당할 수 있습니다.(확인 필요)
    • 제가 예전에 TV 앱을 배포할 때 WebView 사용으로 거절당한 적이 있어서 추가했는데 가이드라인이나 품질 가이드에 정확한 내용이 없어서 확인이 필요한 부분입니다.
      • 당시 단순한 텍스트만 있는 html 파일을 불러오기 위해 WebView를 사용했었습니다.
    • Android TV Games 배포 가이드에는 Android TV에서 웹 브라우저를 지원하지 않는다는 내용이 존재하지만 이게 Android TV Games 배포 시에만 해당되는 내용인지 Android TV 전체에 해당되는 내용인지 확인할 수 없었습니다.

 

* 불확실한 내용은 추가하지 않는 편이지만 WebView관련된 내용은 경험이 있어서 추가했습니다(__)

 

 

* 글에 틀린 부분이 있으면 댓글 부탁드립니다 :D

728x90