이클립스(4.4)에서 안드로이드 V7 MATERIAL DESIGN 위젯을 사용

2017. 11. 13. 17:17 안드로이드/개발 TIP

안드로이드 롤리팝 버전은 기본 UI로 머터리얼 디자인(Material Design)이라는 멋진 디자인을 사용한다. 그리고 하위 버전도 이 UI를 적용한 위젯을 사용할 수 있도록 외부 라이브러리의 형태로 v7 라이브러리를 배포하고 있다. 하위 버전에서 머터리얼 디자인을 적용하는 많은 예제가 안드로이드 스튜디오(Android Studio)에서 Gradle 스크립트를 사용하도록 가이드를 하고 있다. 하지만 아직도 많은 개발자들의 안드로이드 개발에 이클립스(Eclipse)가 사용되고 있어서, 이클립스에서 머터리얼 디자인을 사용하는 방법을 살펴봤다.

v7 라이브러리( Support Library 일부 )에는 다음과 같은 하위 라이브러리 프로젝트들이 존재하고 있다.
+ v7 Support Libraries
– v7 appcompat library
– v7 cardview library
– v7 gridlayout library
– v7 mediarouter library
– v7 palette library
– v7 recyclerview library

이 예제에서는 v7 appcompat library만을 사용하는 예제이다.
이클립스 프로젝트에서 아래의 순서대로 진행을 한다.

1. v7 appcompat library를 추가한다.
v7 appcompat library 추가는 이클립스에서 File -> Import를 사용해서 다음과 같이 추가를 시작한다.


2. v7 appcompat library를 선택하고 추가한다.
위치는 Root Directory에 보는 것과 같은 위치에서 찾을 수 있다.


3. 위에서 추가한 라이브러리를 적용할 프로젝트의 Library로 추가한다.


3.1 선택을 완료하면 다음의 에러가 발생할 수도 있다.

[2014-11-19 09:34:24 – android-support-v7-appcompat] C:\dev\android-sdk\extras\android\support\v7\appcompat\res\values-v21\themes_base.xml:193: error: Error: No resource found that matches the given name: attr ‘android:colorControlNormal’.
[2014-11-19 09:34:24 – android-support-v7-appcompat]
[2014-11-19 09:34:24 – android-support-v7-appcompat] C:\dev\android-sdk\extras\android\support\v7\appcompat\res\values-v21\themes_base.xml:190: error: Error: No resource found that matches the given name: attr ‘android:colorPrimary’.
[2014-11-19 09:34:24 – android-support-v7-appcompat]
[2014-11-19 09:34:24 – android-support-v7-appcompat] C:\dev\android-sdk\extras\android\support\v7\appcompat\res\values-v21\themes_base.xml:191: error: Error: No resource found that matches the given name: attr ‘android:colorPrimaryDark’.

이 경우에는 안드로이드 SDK의 support 라이브러리등의 각종 개발환경을 최신버전으로 업데이트 한다. 만약, 계속 에러 상황인 경우에는 이클립스를 다시 실행시키면 된다.
그리고, android-support-v7-appcompat 라이브러리 프로젝트의 Manifest.xml 파일은 다음과 같다.


따라서 2.1 버전도 지원하는 것을 알 수 있다.

3.2 support v4 라이브러리 일치 문제가 발생할 수 있다.

[2014-11-19 09:56:33 – MaterialExample] Found 2 versions of android-support-v4.jar in the dependency list,
[2014-11-19 09:56:33 – MaterialExample] but not all the versions are identical (check is based on SHA-1 only at this time).
[2014-11-19 09:56:33 – MaterialExample] All versions of the libraries must be the same at this time.
[2014-11-19 09:56:33 – MaterialExample] Versions found are:
[2014-11-19 09:56:33 – MaterialExample] Path: C:\dev\android-sdk\extras\android\support\v7\appcompat\libs\android-support-v4.jar
[2014-11-19 09:56:33 – MaterialExample] Length: 995386
[2014-11-19 09:56:33 – MaterialExample] SHA-1: a13f8fe2c278737e2f0b6fcf00f6b2ae4034aacf
[2014-11-19 09:56:33 – MaterialExample] Path: C:\eclipse 4.4\works\MaterialExample\libs\android-support-v4.jar
[2014-11-19 09:56:33 – MaterialExample] Length: 987314
[2014-11-19 09:56:33 – MaterialExample] SHA-1: 9b6a9a9078af571732159b904ad423b03b7cc786
[2014-11-19 09:56:33 – MaterialExample] Jar mismatch! Fix your dependencies

이 경우에는 android-support-v7-appcompat 프로젝트의 /libs 폴더의 android-support-v4.jar를 프로젝트에 복사를 한다. 이제 다음과 같이 정상 화면을 볼 수 있다.