본문 바로가기
개발/Android

[Android] Android TV 새로운 프로젝트 생성

by JhDroid 2021. 1. 20.
728x90

Android TV 앱 개발을 위한 새로운 프로젝트 생성

  • Create New Project 창에서 Android TV - Empty Activity를 선택해 프로젝트 생성
    • No Activity를 선택하지 않는 이유
      • No Activitiy를 선택해 프로젝트를 생성하면 Android TV를 위한 기본적인 세팅이 되지 않아 불편합니다.
  • Empty Activity를 선택해서 프로젝트를 생성하면 기존에 보던 새로운 프로젝트와 다르게 뭔가 파일이 많이 생성된 것을 확인할 수 있습니다.
    • 샘플 프로젝트 같은 느낌으로 바로 빌드해서 실행하면 여러 가지 레이아웃을 경험할 수 있습니다.
    • 여기서 생성된 클래스들을 참고하면서 개발하는 것이 좋지만 당장은 필요하지 않기 때문에 MainActivity를 제외하고 전부 지워줍니다.(선택)

뭔가 상당히 많다

  • 불필요한 리소스도 제거합니다.
    • drawable
      • default_background.xml
      • movie.png
    • layout
      • activity_details.xml

당장 필요하지 않으므로 과감히 제거

 

기본적인 세팅 확인

  • Manifest 확인
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.jhdroid.tv.sample">

    <uses-permission android:name="android.permission.INTERNET" />

    <uses-feature
        android:name="android.hardware.touchscreen"
        android:required="false" />
    <uses-feature
        android:name="android.software.leanback"
        android:required="true" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.Jhdroidtvsample">
        <activity
            android:name=".MainActivity"
            android:banner="@drawable/app_icon_your_company"
            android:icon="@drawable/app_icon_your_company"
            android:label="@string/app_name"
            android:logo="@drawable/app_icon_your_company"
            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>
  • 기존 프로젝트와 다르게 Manifest에 뭔가 많이 추가된 것을 확인 가능합니다.
    • uses-feature
      • touchscreen
        • 해당 설정을 false로 변경하지 않으면 Play Store에서 Android TV 앱으로 인식되지 않습니다.
      • leanback
        • true로 설정하면 앱이 Leanback UI를 사용하는 기기에서만 실행됩니다.
    • banner
      • Android TV 홈 화면에서 앱 아이콘을 대체합니다.
    • intent-filter
      • category.LEANBACK_LAUNCHER
        • 스마트폰 용 앱에서의 LAUNCHER와 동일한 역할을 하며 이 선언을 빼먹으면 Android TV 앱으로 인식되지 않습니다.

 

  • gradle 확인
plugins {
    id 'com.android.application'
    id 'kotlin-android'
}

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.1"

    defaultConfig {
        applicationId "com.jhdroid.tv.sample"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.leanback:leanback:1.0.0'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.github.bumptech.glide:glide:3.8.0'
}
  • Manifest와 다르게 gradle은 스마트폰 용 프로젝트에 비해 짧습니다.
    • androidx.leanback:leanback
      • Android TV 앱 개발을 위한 UI 템플릿을 제공하며 leanback 라이브러리를 통해 UI 개발을 합니다.
    • glide는 샘플 코드 때문에 추가되었으며 사용하지 않으면 지워도 됩니다.(선택)
  • 어차피 추가하게 될 설정을 미리 추가합니다.
android {
	...
    
    buildTypes {
        ...
    }
    
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

...
  • 여기까지 완료됐다면 기본적인 세팅은 끝나고 개발을 시작하면 됩니다.
  • 다음에는 Leanback 라이브러리의 UI 템플릿을 확인하는 글로 찾아오겠습니다 감사합니다!

 

 

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

728x90