본문 바로가기

프로그래밍

ActionbarSherlock - 안드로이드 액션바의 표준이라고 봐도 무방한 라이브러리

안드로이드가 4.x 버전으로 넘어올때 한가지 큰 변화는 액션바였습니다. 액션바는 그 동안 많은 안드로이드 앱에서 사용되어 왔 습니다. 하지만 아이스크림 샌드위치 버전에서는 액션바를 안드로이드 SDK안에 추가하였고(정확하는 허니콤 버전부터), 액션바를 앱 디자인의 표준으로 삼고 개발자들에게 이를 권장하기 시작했습니다. 하지만 한가지 문제라고 하면 이전버전에서는 안드로이트 4.x의 SDK에 들어있는 액션바를 사용할 수 없다는 것이었습니다. 그래서 나온것이 Actionbar Sherlock이라는 것입니다.

Actionbar Sherlock: http://actionbarsherlock.com/


Actionbar Sherlock


Actionbar Sherlock은 안드로이드 4.x SDK에서 제공되는 액션바를 그대로 재현할 수 있습니다. API 또한 거의 비슷하나, 기존 SDK의 액션바와 혼선을 피하기 위해 조금 다른 API를 사용합니다. Actionbar Sherlock은 2012 google I/O 앱Github앱에서 사용되었습니다. 두 앱을 보면 액션바가 깔끔하게 구현되어 있는 것을 확인할 수 있습니다. 여러분도 이러한 액션바를 정말 쉽게(사실 그렇게 까진 쉽게는 아니고) 구현할 수 있습니다.

먼저 위의 Actionbar Sherlock 홈페이지로 들어가서 Actionbar Sherlock을 다운 받으십시오. 아니면 아래에서 바로 다운받으셔 도 됩니다.

Actionbar Sherlock: Zip, Tarball

자세한 사용법은 다음 블로그를 참조하세요.

http://gyoju12.blogspot.kr/2012/05/actionbar-sherlock-actionbar.html


문제해결

위의 블로그를 참고해서 작업을 하다 보면 오류가 발생할 수 있습니다. 몇 가지 이유가 있을 수 있는데, 그 중 다음 2가지의 오 류가 가장 많이 발생합니다.


android-support-v4.jar 오류

안드로이드 4.x 버전에서 사용되는 많은 기능들을 하위 버전에서도 사용할 수 있도록 해주는 라이브러리가 android-support-v4 라이브러리 입니다. 해당 라이브러리는 구글에서 배포하는 라이브러리이며, 안드로이드 SDK에 들어 있습니다. 프로젝트를 생성하면 자동으로 android-support-v4 라이브러리는 추가 됩니다.

그런데 모든 android-support-v4가 같은 것은 아닙니다. 빌드 버전이 다를 수 있습니다. 현재 프로젝트와 Actionbar Sherlock의 android-support-v4의 빌드 버전이 다르면 오류가 발생합니다. 두 프로젝트 모두 같은 라이브러리에 의존성을 갖기 때문에 사용하 는 라이브러리가 정확히 동일해야 합니다. 이 문제를 해결하는 방법은 다음과 같습니다.

androd-support-v4 라이브러리 오류androd-support-v4 라이브러리 오류

두 프로젝트의 android-support-v4.jar 라이브러리가 정확히 일치해야 합니다. android-support-v4.jar 파일을 프로젝트의 libs/ 폴더에 존재합니다. 한쪽의 jar 파일을 복사하여 다른쪽 jar을 덮어씌우면 의존성 문제는 해결 됩니다.


컴파일러 오류

자바는 여러가지 버전이 있습니다. 이 글을 쓸때 가장 최신 버전의 자바는 1.7 버전입니다. 현재 안드로이드가 지원하는 가장 최신 버전의 자바는 1.6 버전입니다. 왠만해서는 1.6 버전의 자바를 사용하시는 것이 좋습니다. 하위 버전의 자바는 거의 사용할 일이 없습니다. 그런데 이클립스에서 안드로이드 프로젝트를 생성할때 기본 자바가 1.6 버전이 아닌 1.5 버전으로 설정되어 있는 경우가 있습니다. 1.5 버전에서는 @Override의 기능이 1.6 버전과는 다릅니다. 그래서 ActionbarSherlock의 자바 컴파일러 버전이 1.5버전으로 설정되어 있는 경우 @Override를 사용하는 부분에서 아래과 같이 오류가 발생합니다. 

@Override 부분에서 수많은 오류가 발생하였다.

수많은 빨간줄들이 @Override부분에서 발생하는 것을 확인할 수 있습니다. 이 문제를 해결하는 방법은 다음과 같습니다.

프로젝트에서 오른쪽 클릭을 하고 Properties로 들어갑니다.

프로젝트 메뉴에서 Properties 클릭프로젝트 메뉴에서 Properties 클릭

그 다음 Properties 창이 나타나면 Java Compiler 메뉴에 들어가서 1.5버전으로 되어 있는 부분을 1.6으로 바꿔줍니다.

컴파일러 버전을 1.5에서 1.6으로 바꾼다.컴파일러 버전을 1.5에서 1.6으로 바꾼다.

아래와 같이 오류가 모두 사라진 것을 확인할 수 있습니다.

모든 오류가 사라진 화면모든 오류가 사라진 화면


ActionbarSherlock은 안드로이드 개발에 있어서 거의 필수적인 라이브러리라고 할 수 있습니다. 요즘에는 액션바를 거의 사용하니까요. 그런만큼 ActionbarSherlock을 사용하고자 할때 알수 없는 오류가 나서 쩔쩔매는 상황 만큼은 피하는게 좋겠다는 생각에서 포스팅을 하게 되었습니다.