본문 바로가기

Android

Lombok을 Android eclipse (Luna) 에서 이용하기


Lombok을 Android eclipse (Luna) 에서 이용하기




유용한 Lombok, Getter와 Setter를 (코드 없이) 자동 생성


Lombok은 Annotation processor의 일종으로, Getter와 Setter등을 자동으로 생성해 주는 유용한 라이브러리입니다.


이를 이용하면 코드의 가독성을 높일 수 있고, 불필요한 코드를 만들 필요 없이 빠르게 작업할 수 있다는 장점이 있습니다.

C/C++에서 define으로 함수를 만드는 것과 일정 부분이 유사하다고 할 수 있겠는데요, 일정 구문을 컴파일타임에 완전히 치환해 준다는 점에서 그렇습니다. 물론 Lombok은 Getter와 Setter도 만들어주니 더 지능적인 라이브러리 인 것 같습니다.

구글검색을 해 보면 수많은 설치가이드 / 예제가 있는데, 이 포스팅에서는 Android - Eclipse Luna, Windows 7 에서 이용하는 법만 살펴보겠습니다.

위 링크에서 Lombok을 다운로드 받고, 커맨드 라인에서 아래와 같이 실행합니다.

java -jar lombok.jar

그러면 이클립스가 설치된 위치를 선택하라는 UI팝업이 뜨는데, 현재 설치된 위치를 입력해 주면 됩니다. 

eclipse.ini에 아래와 같은 라인이 추가되어 있으면 설치가 완료된 것입니다.

-javaagent:lombok.jar

그리고 작업 중인 프로젝트에 lombok.jar를 추가해줍니다. 즉, 이 jar는 실행도 가능한 라이브러리이며, 실행도 한 번해야 하고 라이브러리로 포함도 시켜줘야 합니다.



설정이 완료되었다면, 아무 클래스에나 @Getter를 붙여봅니다.

@Getter @Setter

public class Beacon{

    public String uuid;

    public String major;

    public String minor;
}


이후 beacon 클래스의 인스턴스를 생성하고, 내부 필드에 Getter Setter를 이용하여 값을 쓸 수 있게 됩니다.

Beacon beacon = new Beacon();

beacon.setMajor("16");



Eclipse Luna에서 발생하는 에러


그런데, Eclipse Luna에는 다음과 같은 에러가 발생합니다.

package javax.annotation does not exist


개발자의 코멘트에 따르면, 설정 값을 변경하라고 합니다.

http://stackoverflow.com/questions/28465603/error-package-javax-annotation-does-not-exist-after-upgrade-to-lombok-1-16-2

You can disable the generation of javax.annotation.Generated by putting the following line in a lombok.config file in one of the top directories of your project:

lombok.addGeneratedAnnotation = false

See the configuration documentation for more information.


커맨드 라인에서 Lombok.jar가 있는 폴더로 이동합니다. 그리고 아래와 같이 입력합니다.

java - jar lombok.jar config -g --verbose > lombok.config

이렇게 하면 lombok.config라는 설정 파일이 생성되는데요, 이 파일을 작업 중인 프로젝트의 최 상위 위치로  옮겨줍니다. AndroidManifest.xml 파일이 있는 곳으로 옮겨주면 되겠네요.


그리고, lombok.config에서 lombok.addGeneratedAnnotation 부분을 검색하여, 해당 라인 전체를 아래와 같이 변경합니다.

lombok.addGeneratedAnnotation = false

그리고 이클립스를 한 번 껐다켜고, 프로젝트를 다시 빌드하면 Lombok이 정상동작합니다.



[추가 팁] 1메가 바이트 Lombok을 48kb로 줄이기: 저용량 Lombok


Lombok이 정말 편리한 라이브러리인 건 맞습니다. 하지만 용량이 1메가바이트가 넘는데, 이건 모바일 앱에 적용하기엔 참 난감한 사이즈입니다.

이럴 땐, 용량이 작은 Lombok.jar를 생성할 수 있습니다.

참고:


Lombok.jar가 있는 폴더로 이동하여, 커맨드 라인에서 아래와 같이 입력합니다.

java -jar lombok.jar publicApi

결과 메시지로 "Successfully created: ???\lombok-api" 가 표시되면 성공입니다.

이제 폴더를 다시 살펴보면, lombok-api.jar 파일이 생성된 것을 확인할 수 있습니다.

이 라이브러리를 작업중인 폴더의 libs 내로 복사하고, 이전에 이용하던 lombok.jar를 삭제한 뒤, Build path도 동일하게 설정해 주면(아예 lombok을 build path에 추가하지 않고 묵시적으로 이용하고 있었다면, 이걸 설정 해 줄 필요도 없습니다) 이전과 마찬가지로 정상동작하게 됩니다.




Syntax highlighted by: http://markup.su/highlighter mac classic