[3] 여러 기기 지원하기 [3] 여러 플랫폼 버전 지원하기

THIS LESSON TEACHES YOU TO

  1. Specify Minimum and Target API Levels
  2. Check System Version at Runtime
  3. Use Platform Styles and Themes

YOU SHOULD ALSO READ

Android API Levels
Android Support Library

While the latest versions of Android often provide great APIs for your app, you should continue to support older versions of Android until more devices get updated. This lesson shows you how to take advantage of the latest APIs while continuing to support older versions as well.

안드로이드가 빈번하게 최신 API를 제공한다고 하더라도, 지속적으로 이전 버전의 안드로이드를 지원해 줘야 할 것입니다. 이번 시간에는 어떻게 최신 API의 이점을 얻으면서 예전 버전도 지원할 수 있는지 알아봅니다.

The dashboard for Platform Versions is updated regularly to show the distribution of active devices running each version of Android, based on the number of devices that visit the Google Play Store. Generally, it’s a good practice to support about 90% of the active devices, while targeting your app to the latest version.

플랫폼 버전 대쉬보드는 정기적으로 업데이트 됩니다. 각각의 안드로이드 버전이 어느 정도 비율로 구글 플레이 스토어를 방문하는지 알 수 있습니다. 일반적으로 90% 이상의 디바이스를 지원하는 것이 추천할 만 합니다.

Tip: In order to provide the best features and functionality across several Android versions, you should use the Android Support Library in your app, which allows you to use several recent platform APIs on older versions.

:  가장 좋은 기능을 여러 안드로이드 버전에 거쳐 제공하기 위해서, 안드로이드 서포트 라이브러리를 사용하는 것이 좋습니다. 최신의 API 버전을 예전 버전에서 실행할 수 있게 해 주지요.

최저 타겟 API 명시하기 – Specify Minimum and Target API Levels


The AndroidManifest.xml file describes details about your app and identifies which versions of Android it supports. Specifically, the minSdkVersion and targetSdkVersion attributes for the <uses-sdk element identify the lowest API level with which your app is compatible and the highest API level against which you’ve designed and tested your app.

안드로이드매니페스트 파일은 앱과 어떤 안드로이드 버전을 지원하는지 상세히 보여줍니다. 특별히, <uses-sdk 엘리먼트 내의  minSdkVersionTargetSdkVersion 속성은, 어떤 최저 API 레벨까지 호환 가능하게 할 것인지, 어떤 최고 API 레벨까지 설계되었는지 확실하게 보여줍니다.

For example:

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

As new versions of Android are released, some style and behaviors may change. To allow your app to take advantage of these changes and ensure that your app fits the style of each user’s device, you should set thetargetSdkVersion value to match the latest Android version available.

새로운 버전이 릴리즈 되면, 일부 스타일과 행동이 바뀝니다. 앱에서 이 변화를 받아들이게 하기 위해서 앱이 그 스타일과 각각의 디바이스에서 지원하는지 확인해보고, targetSdkVersion 값을 최신 안드로이드 버전으로 맞춰줍니다.

Check System Version at Runtime


Android provides a unique code for each platform version in the Build constants class. Use these codes within your app to build conditions that ensure the code that depends on higher API levels is executed only when those APIs are available on the system.

안드로이드는 특별한 코드를 각각의 플래폼 버전에 제공합니다.

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);
    }
}

Note: When parsing XML resources, Android ignores XML attributes that aren’t supported by the current device. So you can safely use XML attributes that are only supported by newer versions without worrying about older versions breaking when they encounter that code. For example, if you set the targetSdkVersion="11", your app includes the ActionBar by default on Android 3.0 and higher. To then add menu items to the action bar, you need to set android:showAsAction="ifRoom" in your menu resource XML. It’s safe to do this in a cross-version XML file, because the older versions of Android simply ignore the showAsAction attribute (that is, you do notneed a separate version in res/menu-v11/).

XML 리소스를 파싱할 때, 안드로이드는 XML 속성을 무시합니다. 어떤 속성이냐면 지원하지 않는 속성입니다. 현재 기기에서 지원하지 않는 속성을 무시합니다. 그래서 우리는 안전하게 새로운 버전만 지원하는 XML 속성도 걱정 없이 사용할 수 있습니다.  예를 들어 우리가 targetSdkVersion="11" 이라 지정해도, 우리 앱은 ActionBar 를 안드로이드 버전 3.0 이상에서 포함할 수 있습니다. 그리고 메뉴 아이템을 액션바에 더하기 위해서, android:showAsAction="ifRoom" 을 셋팅하면 됩니다. 크로스-버전 XML 파일에서 이렇게 하는 것은 안전합니다. 왜냐하면 이전 버전은 ShowAsAction 속성을 무시하기 때문입니다. (분리된 버전을 res/menu-v11/ 안에 놓을 필요가 없다는 것입니다.)

플랫폼 스타일 및 테마 사용하기 – Use Platform Styles and Themes


Android provides user experience themes that give apps the look and feel of the underlying operating system. These themes can be applied to your app within the manifest file. By using these built in styles and themes, your app will naturally follow the latest look and feel of Android with each new release.

안드로이드는 앱에게 OS의 외형과 느낌을 줄 수 있는 UX 테마를 제공합니다. 이러한 테마는 매니페스트 파일에서 적용합니다. 이러한 빌트인 스타일과 테마를 사용해서, 우리의 앱는 자연스럽게 최신 안드로이드 느낌을 가질 수 있게 됩니다.

 

To make your activity look like a dialog box:

아이얼로그 박스같은 느낌의 액티비티 만들기

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

To make your activity have a transparent background:

투명한 배경을 갖는 액티비티를 만들기

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

To apply your own custom theme defined in /res/values/styles.xml:

/res/values/styles.xml 에 정의된 커스텀 테마를 적용하기

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

To apply a theme to your entire app (all activities), add the android:theme attribute to the <application> element:

우리의 전체 앱 (모든 액티비티에) 테마를 적용하고, android:theme 속성을 <application> 엘리먼트에 추가하기

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

For more about creating and using themes, read the Styles and Themes guide.

더 자세한 정보는 Styles and Themes guide 를 확인하세요


답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중