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

[Tip] Android Studio, Intellij 에서 Source Code Pro font 적용

예전에 코딩할 때 좋은 폰트 에 Source Code Pro 가 1등으로 선정된 것을 본 적이 있다. 그전까진 나눔고딕코딩 을 자주 썼는데, Source Code Pro 를 쓰면서 가독성이 좀더 향상된 것을 느낄 수 있어 요즘 주력 폰트로 사용 하고 있다. 그런데 Mac에서는(윈도우는 어떨지 모르겠지만...) Eclipse 나 Xcode 에서는  문제없는 이 폰트가 유독 Intellij 혹은 Android Studio 에서는 폰트 설정 시, 이탤릭체가 깨지는 문제가 발생하고 있다. 폰트 설치 후, Intellij 에 적용하면 아래와 같이 이텔릭 채 부분에서 깨지기 시작한다. 이같은 문제는 이미 Source Code Pro Github issue 에 등록되어 있는데, issue 에서 가이드 하는 수정방법은 다음과 같다. 먼저 Source Code Pro Font 를 다운받고, 설치하자. Source Code Pro Font 다운로드   그 후 아래 폴더로 이동하자. /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/fonts 위 경로에 Source Code Pro 의 TTF 에 포함되어 있던 폰트들을 모두 복사하여 붙여넣는다. 그리고 Intellij (혹은 Android Studio) 를 재부팅 후, 다시한번 폰트를 설정하러 들어가면 아래와같이 폰트들이 나타나는것을 확인 할 수 있다. 개인적으로 Medium 을 선호하기 때문에 Medium 을 선택. 그러면 아래처럼 정상적으로 출력됨을 확인할 수 있다.

[GDG Seoul] OSS/Github 입문 CodeLab 후기

작년 이맘때 쯤, GDG Android Korea 에서 CodeLab 을 진행 했었는데, 올해는 GDG Seoul 에서 진행한 "OSS/Gitub 입문 CodeLab" 이란 타이틀로 CodeLab 을 진행하여 참가하게 되었다. git 이나 Github 를 처음 사용하는건 아니였지만, 거의 SVN 처럼 사용 해 온지라, "이참에 재대로 한번 배워보자!" 하는 맘이 컸고, 다른 분들은 어떻게 Github 를 사용하시는지도 궁금했다. CodeLab 은 크게 - OSS 에 대한 설명 및 Newbi 를 위한 Tutorial - Github 및 git 에 대한 Tutorial - CodeLab 순으로 진행 되었다. (딱히 순서에 이름이 없는것 같아서 임의로 붙였다.) 1. OSS 에 대한 설명 및 Newbi 를 위한 Tutorial (뉴비X 님) ( 슬라이드 링크 ) OSS (Open Source Software) 에 대한 간략한 소개와 Linux Kernel 를 예로 Contribute 하는 방법에 대한 이야기를 들을 수 있었다. Android 의 경우만 해도 여러 open source library 의 도움으로 좀더 편하고 쉽게 App 개발을 진행 할 수 가 있는데, 사용하면서 개선한 사항에 대해서 내가 코드에 기여할 수 있겠다. 라는 생각이 많이 들었다. 특히 Newbi 를 위한 주의해야 할 사항이 인상깊었는데, 간단하게 요약 하자면, - coding Style - You are just a newbi here - start from jab  ( 작은 것 부터 시작하자.. 조그마한 작업부터, 혹은 리뷰…) - commit log style - summarized title on First Line - just \n on Second Line - Detailed log after 3rd Line 이정도가 아닐까 싶다. 특히, 의욕이 너무 지나쳐서 너무 많은 것을 커밋...