Saturday, September 19, 2015

[AndroidAnnotations structure analysis] How to make custom annotation processor_01

1. 개요

AndroidAnnotations 프레임워크 분석을 위해 나만의 커스텀 annotation processor를 따라 만들어보자.


2. 환경

Android Application는 Android Studio를 사용하고, AndroidAnnotations 프레임워크는 IntelliJ를 사용한다. 4.0-SNAPSHOT의 develop 브랜치에 따라가는 것임을 밝힌다.
앞으로 분석을 위해 만들 custom annotation processor는 동일한 구조를 본딸 것이다. 이에 앞서, 어떤 방식으로 이 annotation processor가 import될 수 있는지 보자.

AndroidAnnotations의 최신 버전(develop 브랜치에서 개발중)인 4.0-SNAPSHOT이다. 어플리케이션에서 이 프레임워크를 사용하기 위해서는, 어플리케이션에 빌드 스크립트가 들어가 있어야 한다.
mavenCentral에 올라간 것을 사용하는 것이 아니라, 직접 빌드한 결과물을 로컬에서 가져오기 위해 아래와 같이 mavenLocal을 선언하였다. (4.0-SNAPSHOT 버전은 아직 릴리즈되지 않았기 때문이다.)
아래와 같이 annotation processor를 선언하고, 해당 annotation processor에 알맞는 api 라이브러리를 선언해준다.


그러면 이제 다음과 같은 예쁜 소스코드를 사용할 준비가 완료된 것!


3. AndroidAnnotations 프레임워크 구조 분석

AndroidAnnotations의 프로젝트 구조는 다음과 같다.

core는 EActivity 등 AndroidAnnotations의 필수요소들을 담고 있으며, 나머지 Rest 등 다른 요소들은 필요시 옵션으로 부착할 수 있게 되어있다. core를 보면 다음과 같이 annotation processor와 core가 사용하는 api로 구성되어 있다. (테스트는 다음에 다루자.)

위 라이브러리들은 maven을 통해 다음과 같이 jar로 추출된다. 이 중 javadoc과 sources를 제외하고 필수 요소만으로도 사용할 수 있다.



4. AndroidTannotations 프레임워크 및 테스트 어플리케이션 생성

이제 나만의 custom annotations processor를 만들어보자. 내 이름은 김태희니까 태노테이션이라고 해보았다. 팀원들은 어이가 없는 모양이지만 그냥 이렇게 할거다.
앞서 언급한 대로 Android Studio로 Android Application을 만들어보자.(저는 1.3.2) (남아있는 소스는 그냥 찌꺼기니 신경쓰지 않으셔도 좋다.)


그리고 나서, IntelliJ로 Java Application을 만들어보자.(저는 15 EAP) (남아있는 소스는 그냥 찌꺼기니 신경쓰지 않으셔도 좋다2.)

원래 있던 main()을 없애고, [Project Structure -> Artifacts -> +로 JAR를 추가]로 설정하여 실행하면 main()이 실행되는 게 아니라, 실행되지 않는 jar가 생성되도록 설정해주자. 그러면 이제 라이브러리로 사용할 프로젝트가 완성되었다. (원래는 maven 빌드로 만들지만 원리를 파악하기 위함이니까 그렇게까지는 하지 않습니다.) 여기까진 기본이져...

이렇게 하면 준비 끝~ 이 아니고 그 전에! annotation processor를 만드는 방법을 알아야 한다. 다음 장에 계속...


No comments:

Post a Comment