Skip to main content

[Android] Butter Knife Library(1)

Android UI 개발 시, 반드시 선언해 주어야 하는 구문 중 하나가 바로 findViewById 이다.
이는 View 를 선언할 때 반드시 필요한 구문이지만, 반복적으로 사용해야 하고, 메소드가 길어지는점, 특히, Adapter 에서 Holder pattern 과 같이 사용하게 되면 같은말을 두번해야 하는 번거로움 마저 느껴진다.

최근에는 이같은 반복적인 작업과 UI 선언 부의 노력을 줄이고, 코드에 좀 더 집중하기 편한 Library 들이 선보이고 있다.

그중에서도 눈의 띄는 Library 는 단연 AndroidAnnotations 과 지금부터 이야기 할 Butter Knife 이다.
AndroidAnnotations
AndroidAnnotations logo
AndroidAnnotations 은 지난 GDG mini conference 에서도 소개된 적이 있다.
(사실 그때 처음 일았지만..)

당시에 Clean Code 라는 주제로 코드 분량을 줄이고, 실제 동작하는 로직에 좀 더 집중할 수 있도록 도와 주었다. 사실 , AndroidAnnotations 이 더 많은 기능을 제공하고 있지만, EActivity 사용시 _ 를 추가해야 한다는 점, 과거 intellij 에 적용시 몇몇 버그들이 발생 으로 인해 (현재는 해결됬을지도.) 프로젝트에 적용하기 쉽지 않았다.

그러던 중, 최근 가장 hot 한 Opensource 를 제공하고 있는 Square 팀의 JakeWharton 이 Butter Knife 를 Release 하였다.
Butter Knife logo
현재 가장 최신 버전은 2.0.1 이고 계속해서 기능개선이 이루어 지고 있다.

Butter Knife 는 아래와 같은 장점을 지니고 있다.

1. LightWeight Size


모바일 device 에서는 jar 하나 추가하는데도 많은 고민을 해야 한다. 안그래도 많은 기능들을 추가해야 되고, library 를 사용해야 하는데 이렇게 코드를 줄이기 위해서 많은 용량을 할애하기도 애매하다.

androidannotations 의 경우에는 build path 에 적용되야 할 jar 의 용량이 61kb 이다.
반면, butter knife 는 19kb 로 상대적으로 lightweight 하다고 말할 수 있다.

- androidannotations-2.7.1.jar : 543kb
- androidannotations-2.7.1.jar : 61kb
- butterknife-2.0.1.jar : 19kb

 2.Easy to Use


기존 라이브러리 의 단점 중 하나를 꼽자면 사용하기 어렵다는 점 이다. 예를 들어 AndroidAnnotations 의 경우, @EActivity 를 사용하면서 Manifest.xml 을 수정해야 하고, 개발 전 세팅 단계에서 많은 시간을 필요로 한다.

Butter Knife 의 경우, jar 를 build path 에 등록하고 annotation processing 설정만 해 주면 간편하게 사용 할 수 있다. 또한, eclipse, android studio(intellij) 모두 에러없이 잘 작동한다.

사용법도 비교적 쉽기 때문에 annotation 에 깊은 지식이 없다고 하더라도 쉽게 접근이 가능하다.

이제 Butter Knife 를 Android Studio 에서 사용해 보자.
Android Studio 에 Library 를 추가하면 다음 과 같은 세팅이 필요하다.

우선 libs 폴더에 butterknife-2.0.1.jar 를 추가하자.


Android Studio 에서는 Gradle build 를 사용하기 때문에, build.gradle 에 해당 library 를 dependencies 에 추가 해야 한다.

- build.gradle -
dependencies {
    compile 'com.android.support:support-v4:13.0.+'
    compile files ('libs/butterknife-2.0.1.jar')
}

Butter Knife 역시 annotation processing 을 사용하기 때문에 해당 옵션을 enable  해 주어야 한다.
Preferences -> Compiler -> Annotations Processors -> Enable annotation processing  을 체크 한다.
마지막으로 Project Structure 에 해당 library 를 사용하도록 추가 함으로써 개발 설정이 끝이 난다.



Comments

Popular posts from this blog

[Android Application Testing Guide] Chapter3 jar file

Android Application Testing Guide(에이콘) 3장 Sample 을 실행시키기 위해서는 libdummy-0.0.1.jar 가 필요한데, sample file 에는 프로젝트만 존재한다. 결국 jar 를 만들어야 되는데.. ant 빌드다. 어허허... jar 파일이 없으면 예제 진행이 어려우므로. ant build 한 jar 를 첨부. libdummy-0.0.1.jar download

[JUnit] JUnit 최신 사용시 주의점(JUnit in Action)

요즘 JUnit in Action 을 통해 JUnit 공부를 해 가고 있다. 책에서 사용하는 버전은 4.6, 현재 JUnit 의 최신 버전은 4.11 이다. 그런데.. 다운받아서 실행해 보면 여러 에러가 발생하게 된다. 특히 chp3 에서는 Hamcrest 를 사용하게 되는데 최신버전(4.11) 에서는 Hamcrest 가 포함되어 있지 않기 때문에 별도로 받아서 같이 실행 해야 한다. 따라서 편하게 책 내용을 진행하기 위해서는 4.6을, 그나마 좀 더 최신 버전을 쓰기 위해서는 4.10 을 (4.10 까지는 Hamcrest 포함). 아니면 아예 이클립스로 작업해서 JUnit 을 설정해 주면, 4.11 버전에 Hamcrest 를 모두 포함해서 실행시켜 준다.

Google Press Event 7/24/13

Sundar Pichai 와 함께한 아침. Google 은 3가지 새로운 제품에 대한 발표를 하였습니다. 1. 2nd Nexus7 첫번째는 이미 소문이 무성했던 Nexus7 입니다. 성능이 대폭 향상되었습니다. Nexus 7 발매와 더불어 google app 들이 업데이트 되었고, Google Play Game 과의 연계성도 더욱 향상되었습니다. 4G LTE 는 미국에만 제한적으로 사용될 것으로 보입니다. 가격은 다음과 같습니다. - 16GB WIFI : $229 - 32GB WIFI : $269 - 32GB LTE : $349 조만간 발매될 국가에 한국도 포함되어 있습니다. (만세!) Google Play 에서 판매 예정이라고 합니다. 개인적으로 고화질 디스플레이 와 OpenGL|ES 3.0 이 지원되면서 게이밍 기능이 향상된 점을 강조하는 것이 눈에 띄였습니다. 아마도 멀티미디어 적인 기능향상으로 인한 자신감이 아닐까요. 2. Android 4.3 두번째로 Android 4.3 에 대한 소식입니다. 새로운 기능들이 많이 추가되었습니다. 4.3 APIs  는 바로 다운 받을 수 있습니다. http://developer.android.com/about/versions/jelly-bean.html 개인적으로 눈에 띄는 APIs 는 ActionBar 가 드디어 하위버전을 지원하기 시작했다는 것 입니다. new v7 appcompat library 에 추가 된 사항으로 Android 2.1(API level 7) 까지 지원합니다. 이를 지원하기위해  ActionBarActivity class 가 새로이 추가 되었습니다. 3. Chromecast 위 두 소식은 이미 들은 이야기가 많았지만 chromecast  는 좀 생소했습니다. 쉽게 생각해서 Apple 의 AirPlay 와 흡사하다고 보시면 될 것 같습니다. ...