본문 바로가기

안드로이드개발팁

IntelliJ에서 AndroidAnnotations 사용하기



AndroidAnnotations(이하 안드로이드 어노테이션)은 안드로이드 개발 속도를 높여주는 멋진 오픈 소스 프로젝트입니다. 어노테이션으로 뷰들을 인젝션 할 수 있는데 이를 통해서 줄일 수 있는 반복 코드만 하더라도 상당히 많기 때문에 한 번쯤은 사용해 보시라고 권하고 싶습니다. 이 번 글에서는 IntelliJ(이하 인텔리제이)에서 안드로이드 어노테이션을 사용하는 방법을 다루겠습니다.


우선 메이븐을 사용할 것이기 때문에 메이븐에 익숙하지 않으신 분은 Maven으로 Android 프로젝트 만들기 글을 먼저 읽어 주시길 바랍니다. 


메이븐으로 만든 프로젝트를 인텔리제이 프로젝트로 변환하는 것은 어렵지 않습니다. 인텔리제이가 모든 일을 알아서 해 주기 때문입니다. 인텔리제이를 실행한 후 Quick Start에서 Import Project를 선택합니다.



메이븐으로 만든 프로젝트 폴더를 선택합니다. 여기서는  Maven으로 Android 프로젝트 만들기  글에서 작성한 MyFirstAndroidApp 프로젝트를 사용하겠습니다. 폴더를 선택하면 프로젝트 임포트 방법을 묻는 창이 나옵니다.



여기서 Maven 항목을 선택한 후 Next 버튼을 누릅니다. 



위 창에서 Import Maven projects automatically 를 체크합니다.  Import Maven projects automatically 를 체크하면 pom.xml 파일에 라이브러리를 추가했을 때 자동으로 임포팅해 줍니다. 코드편집창이 나올 때까지 Next버튼을 계속 누릅니다. 이렇게 하면 메이븐으로 생성한 프로젝트를 인텔리제이 프로젝트로 변환이 끝난 것 입니다. 프로젝트를 빌드해 보면 안드로이드 버전이 맞지 않아서 "java: Fatal Error: Unable to find package java.lang in classpath or bootclasspath" 오류가 발생할 수 있습니다. 이럴 때에는 프로젝트 구조(Project structure)화면에서 모듈을 선택 한 후 모듈 SDK를 Project SDK로 변경해 주면 됩니다.


변환이 완료 되었다면 안드로이드 어노테이션 라이브러리를 추가해 보겠습니다. pom.xml 파일을 선택 한 후 아래와 같이 의존성 항목에 아래의 항목을 추가합니다. 

<dependency>

    <groupId>com.googlecode.androidannotations</groupId>

    <artifactId>androidannotations</artifactId>

    <version>2.7.1</version>

    <scope>provided</scope>

</dependency>


<dependency>

<groupId>com.googlecode.androidannotations</groupId>

<artifactId>androidannotations-api</artifactId>

<version>2.7.1</version>

</dependency>

pom.xml 파일을 수정하고 저장하면 인텔리제이가 자동으로 해당 라이브러리를 메이븐을 통해서 다운로드하고 임포트합니다. 라이브러리를 임포트했으니 이제 남은 일은 프로젝트에서 어노테이션이 작동하도록 설정하는 것입니다. 인텔리제이의 설정에서 annotation이라고 필터링을 하면 아래 화면처럼 어노테이션을 설정할 수 있는 창이 나옵니다. 아래처럼 옵션을 설정합니다.

 Processor path항목에는 자신의 메이븐 레포지토리 디렉토리(.m2) 경로를 포함하여 아래처럼 작성합니다.

<YOUR .m2 PATH>/repository/com/googlecode/androidannotations/androidannotations/2.7.1/androidannotations-2.7.1.jar:<YOUR .m2 PATH>/repository/com/googlecode/androidannotations/androidannotations-api/2.7.1/androidannotations-api-2.7.1.jar:<YOUR .m2 PATH>/repository/com/sun/codemodel/codemodel/2.4.1/codemodel-2.4.1.jar

<YOUR .m2 PATH>에 자신의 메이븐 레포지토리 디렉토리를 경로를 적어주면 됩니다. 맥에서는 ~/.m2 이며 풀어쓰면 /Users/사용자아이디명/.m2 입니다. 


이제 안드로이드 어노테이션의 설정이 끝났습니다. 어노테이션을 사용해서 액티비티를 강화 해 보겠습니다. 어노테이션에 관한 자세한 내용은 https://github.com/excilys/androidannotations/wiki 를 참고하길 바랍니다. HelloAndroidActivity.java 파일을 선택한 다음 아래처럼 액티비티 강화 어노테이션을 추가합니다.

package kr.k2studio;


import android.app.Activity;

import android.view.Menu;

import com.googlecode.androidannotations.annotations.EActivity;


@EActivity(R.layout.activity_main)

public class HelloAndroidActivity extends Activity {

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

   // Inflate the menu; this adds items to the action bar if it is present.

   getMenuInflater().inflate(kr.k2studio.R.menu.main, menu);

   return true;

    }

}


그리고 AndroidManifest.xml 파일을 선택해 액티비티의 이름을 HelloAndroidActivity 에서 HelloAndroidActivity_ 로 변경합니다.

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="kr.k2studio"

    android:versionCode="1"

    android:versionName="1.0-SNAPSHOT" >


    <uses-sdk

        android:minSdkVersion="16"

        android:targetSdkVersion="16" />


    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme">

        <activity android:name=".HelloAndroidActivity_" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>

</manifest>


프로젝트를 빌드하고 디바이스에 apk를 심어보면 잘 실행되는 것을 확인할 수 있습니다 :)