Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

다양한 플랫폼 버전 지원

최신 버전의 Android가 앱에 뛰어난 API를 제공하는 경우가 흔하지만, 더 많은 기기가 업데이트되기 전까지는 이전 버전의 Android도 계속 지원해야 합니다. 이 과정에서는 이전 버전을 계속 지원하면서 최신 API를 활용하는 방법을 보여줍니다.

Platform Versions 대시보드는 정기적으로 업데이트되어 Google Play Store를 방문하는 여러 기기를 토대로 각각의 Android 버전을 실행하는 기기의 분포를 보여줍니다. 일반적으로 최신 버전을 앱의 대상으로 하되, 현재 사용 중인 기기의 90% 정도를 지원하는 것이 좋습니다.

팁: 여러 Android 버전 전반에 걸쳐 최고의 특징과 기능을 제공하려면 앱에 Android 지원 라이브러리를 사용해야 합니다. 이 라이브러리를 사용하면 이전 버전에서 여러 최신 플랫폼 API를 사용할 수 있습니다.

최소 및 대상 API 레벨 지정

AndroidManifest.xml 파일은 앱에 관한 세부 정보를 설명하고 앱이 지원하는 Android 버전을 식별합니다. 특히, <uses-sdk> 요소의 minSdkVersiontargetSdkVersion 속성은 앱이 호환되는 가장 낮은 API 레벨과 앱을 설계하고 시험한 가장 높은 API 레벨을 식별합니다.

예:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
    ...
</manifest>

새 Android 버전이 출시됨에 따라 일부 스타일과 동작이 바뀔 수 있습니다. 앱이 이러한 변화가 제시하는 이점을 활용하고, 각 사용자 기기의 스타일에 부합하게 하려면 targetSdkVersion 값이 사용 가능한 최신 Android 버전과 일치하도록 설정해야 합니다.

런타임에 시스템 버전 확인

Android는 Build 상수 클래스에서 각 플랫폼 버전에 대한 고유 코드를 제공합니다. 앱에 이 고유 코드를 사용하여 상위 레벨의 API에 종속된 코드가 시스템에서 이러한 상위 레벨의 API를 사용 가능할 때만 실행되도록 하는 조건을 구축하세요.

Kotlin

private fun setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        actionBar.setDisplayHomeAsUpEnabled(true)
    }
}

Java

private void setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

참고: XML 리소스 파싱 시, Android는 현재 기기가 지원하지 않는 XML 속성을 무시합니다. 따라서 이전 버전이 해당 코드를 접하게 될 때 오작동하는 것을 걱정하지 않고 최신 버전에서만 지원되는 XML 속성을 안심하고 사용할 수 있습니다. 예를 들어 targetSdkVersion="11"을 설정하면 앱은 Android 3.0 이상의 버전에서 기본적으로 ActionBar를 포함합니다. 그런 다음 메뉴 항목을 작업 표시줄에 추가하려면 메뉴 리소스 XML에 android:showAsAction="ifRoom"을 설정해야 합니다. 이전 버전의 Android는 showAsAction 속성을 단순히 무시하므로(즉, res/menu-v11/에 별도의 버전이 필요하지 않음) 교차 버전 XML 파일에서 이 작업을 수행해도 안전합니다.

플랫폼 스타일 및 테마 사용

Android는 앱에 기본 운영 체제의 모양과 느낌을 주는 사용자 경험 테마를 제공합니다. 매니페스트 파일에서 이 테마를 앱에 적용할 수 있습니다. 이 기본 제공 스타일과 테마를 사용하면 새로운 Android 버전이 출시될 때마다 앱이 자연스럽게 최신 버전의 모양과 느낌을 따르게 됩니다.

Activity를 대화상자처럼 보이게 하려면 다음과 같이 합니다.

<activity android:theme="@android:style/Theme.Dialog">

Activity 배경을 투명하게 설정하려면 다음과 같이 합니다.

<activity android:theme="@android:style/Theme.Translucent">

/res/values/styles.xml에 정의된 고유한 사용자 지정 테마를 적용하려면 다음과 같이 합니다.

<activity android:theme="@style/CustomTheme">

앱 전체(모든 Activity)에 하나의 테마를 적용하려면 android:theme 속성을 <application> 요소에 추가합니다.

<application android:theme="@style/CustomTheme">

테마를 생성하고 사용하는 방법에 대한 자세한 내용은 Styles and Themes 가이드를 참조하세요.