Android Suuport Libraries (Android Studio)
서로 다른 안드로이드 버전에서 app이 부드럽게 이동하기 위한 방법
1.Overview
UI 엘리먼트
form factors
Miscellaneous utility functions
Android Studio는 Android Support Repository
Android Support Libraries는
<sdk>/extras/android/support
에 저장 된다.
Backward-compatibility
상위 버전에서 개발된 앱은 더 낮은 버전에서 동작해야 한다.
예를들면 5.0 (API level 21) 이상에서 개발된 앱이 그 이하의 Android Framework에서 동작해야 한다.
하지만 그 5.0이아에서는 material design element가 없다. 이럴때 Support Library's appcompat library에 의해서 이것이 적절하게 대체되어 표현 될 수 있다.
Support for General Layout Patterns
User Interface를 지원 한다.
DrawerLayout
같은 meterial desgin에 나오는 것들을 4.4 version에서 동작하게 한다.
Support for Different Form Factors
Tv, wearable과 같은 것들에서 동작하게 한다.
General Utilities
backward-compatible utility function을 지원 한다.
2.Support Library Features
Support library package는 다양한 라이브러리들을 포함한다.
일반적으로 v4 supprot
와 v7 appcompat
을 추천 한다고 한다.
왜냐하면 가장 대중적인 UI pattern을 지원하기 때문이다.
v4 Support Library
Android 1.6 (API level 4) 이상에서 쓰기 위해서 설계됨.
기능 내용: click
라이브러리 위치: <sdk>/extras/android/support/v4/ directory
Gradle dependecy identifier는 다음과 같다.
com.android.support:support-v4:23.3.0
Multidex Support Library
함수가 65536개 이상일 경우 사용하는 것이다.
위치: <sdk>/extras/android/support/multidex/ directory
com.android.support:multidex:1.0.0
v7 Support Libraries
Android 2.1 (API level 7) 이상에서 사용되어지게 구현 되었다.
v7 appcompat library
Action Bar
와 meterial desgin
을 위해서 구현되었다.
v4에 의존적이다. 그렇다고 v4를 import할 필요는 없다.
이미 v7 folder에는 v4가 포함 되어 있다.
위치 <sdk>/extras/android/support/v7/appcompat/ directory
해당 라이브러리는 User Interface resource가 포함되어 있다.
com.android.support:appcompat-v7:23.3.0
v7 cardview library
card view를 지원하며 이것은 material design 스타일이다.
TV app을 위한 것이다.
위치 <sdk>/extras/android/support/v7/cardview/ directory
리소스 포함됨
com.android.support:cardview-v7:23.3.0
v7 gridlayout library
GridLayout
을 사용하기 위해서 구현 되었다.
위치: <sdk>/extras/android/support/v7/gridlayout/
리소스가 포함되어있다.
com.android.support:gridlayout-v7:23.3.0
v7 mediarouter library
Google cast를 지원 하기 위함이다. 이와 관련 class들은
MediaRouter, MediaRouteProvide 이다.
위치: <sdk>/extras/android/support/v7/mediarouter/
리소스 라이브러리
com.android.support:mediarouter-v7:23.3.0
v7 palette library
v7 recyclerview library
v7 recyclerview library
v7 Preference Support Library
CehckBoxPreFerence
와 ListPreference
등과 같은 UI setting 컴포넌드들을 지원한다.
위치: <sdk>/extras/android/support/v7/preference
com.android.support:preference-v7:23.3.0
v8 Support Library
Android 2.2 (API level 8) 이상에서 사용되기 위해서 디자인 되었다.
v8 renderscript library
RenderScript를 지원하기 위함이다.
v13 Support Library
Android 3.2 (API level 13) 이상에서 사용되기 위해서 개발됨.
Fragment pattern를 지원 한다.
리소스 없
위치:<sdk>/extras/android/support/v13/
com.android.support:support-v13:23.3.0
v14 Preference Support Library
skip
v17 Preference Support Library for TV
skip
v17 Leanback Library
UI for TV
Annotations Support Library
skip
Custom Tabs Support Library
skip
Percent Support Library
skip
App Recommendation Support Library for TV
skip
Support Library Setup
사용에 필요한 Android Support Libraries
의 결정은
어떤 기능들을 사용할지와 얼마만큼의 version을 포괄 할지에 달려 있다.
TargetSDK
를 uppper-bound로 설정하고 minSDK
를 lowerbound로 설정 해야 한다.
다운로드 방법
- SDK Manager를 시작한다.
Extras
folder에서 Android Support Library
를 선택 한다.
단 Android Studio
에서 개발할경우 Android Support Repository
를 선택 한다.
설치 버튼을 누른다.
라이브러리 설치 경로는 <sdk>/extras/android/support/
이다.
root@jemin-virtual-machine:~/Android_Application_Tools/android-sdk-linux_r24/extras/android/support# ls
annotations graphics package.xml recommendation v13 v4
customtabs multidex percent samples v14 v7
design NOTICE.txt README.txt source.properties v17
Support Libraries 선택
어떤 기능을 사용할지 정해야 한다.
어떤 버전까지 backward-compatability
를 수용할지 정해야 한다.
Adding Support Libraries
Support Libraries는 resource를 포함하고 있다.
v7 appcompat과 같은 라이브러리들은 image들 또는 XML file들과 같은 resource들을 포함하고 있다.
여기서 Eclipse와 차이점이 존재 한다.
Eclipse ADT의 경우 library가 resource를 사용한다면, 해당 resource는 반드시 어떠한 Project
로써 workspace안에 Import되어 있어야 한다. resource가 연결된게 없다면 그냥 libs
folder에 해당 라이브러리 추가하고 build path만 설정하면 된다.
Android Studio, gradle의 경우 이 with, without resources 과정이 동일하다. 즉 더 간단해졌다.
아래와 같이 build system에 dependencies만 설정해 주면 된다.
Adding libraries without resources
To add a Support Library without resources to your application project:
Make sure you have downloaded the Android Support Repository using the SDK Manager.
Open the build.gradle file for your application.
Add the support library to the dependencies section. For example, to add the v4 support library, add the following lines:
dependencies {
...
compile "com.android.support:support-v4:18.0.+"
}
Adding libraries with resources
To add a Support Library with resources (such as v7 appcompat for action bar) to your application project:
Make sure you have downloaded the Android Support Repository using the SDK Manager.
Open the build.gradle file for your application.
Add the support library feature project identifier to the dependencies section. For example, to include the appcompat project add compile "com.android.support:appcompat-v7:18.0.+" to the dependencies section, as shown in the following example:
dependencies {
...
compile "com.android.support:appcompat-v7:18.0.+"
}
Using Support Library APIs
support library 이름과 api level 이름의 숫자는 동일 하다.
android.supprot
class package 또는 *compat
suffix 스타일을 가지기 때문이다.
예제
Caution: When using classes from the Support Library, be certain you import the class from the appropriate package. For example, when applying the ActionBar class:
android.support.v7.app.ActionBar
when using the Support Library.
android.app.ActionBar
when developing only for API level 11 or higher.
추가로 ProGuard
를 반드시 사용하는게 좋다. 난독화를 통환 soruce code 보호 뿐만 아니라
supprot library로 인한 dead code들이 많이 생성되므로 이것을 ProGuard
가 모두 제거해주는 기능도 한다.
Manifest Declaration Changes
Eclipse 환경이면 아래의 minSdkVersion
을 수정해야 한다.
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="17" />
위 말은 Android 2.1 (API level 7) 이상에서만 설치가 가능 하다는 것이다.
Android Studio 환경이라면 Gradle Build 시스템을 수정 하면된다.
API level 8 이면 Android 2.2이므로 따라서 support librarylevel을 7이나 4를 선택해야 한다.
apply plugin: 'com.android.application'
android {
...
defaultConfig {
minSdkVersion 8
...
}
...
}
Code Samples
아래의 샘플들은 일단 모두 Eclipse 기반으로 작성 되어 있다.
Each Support Library includes code samples to help you get started using the support APIs. The code is included in the download from the SDK Manager and is placed inside the Android SDK installation directory, as listed below:
4v Samples: /extras/android/support/samples/Support4Demos/
7v Samples: /extras/android/support/samples/Support7Demos/
minsdk 7
target sdk 21
13v Samples: /extras/android/support/samples/Support13Demos/
App Navigation: /extras/android/support/samples/SupportAppNavigation/
필자는 7v Sample을 실행해 볼려고 했으나 Gradle Build script가 없어서 안된다.
아래의 과정을 따라한다.
- Gradle import
- build.sciprt 수정
dependencies {
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:cardview-v7:23.1.0'
compile 'com.android.support:gridlayout-v7:23.1.0'
compile 'com.android.support:palette-v7:23.1.0'
compile 'com.android.support:mediarouter-v7:23.1.0'
compile 'com.android.support:recyclerview-v7:23.1.0'
}
참고사이트: http://stackoverflow.com/questions/33293283/cannot-build-support7demos-on-recent-android-studio-install-on-windows