[Android] Snow Leopard 에서 Emacs 를 Android 개발환경 IDE로 세팅

Android 를 개발하기에 제일 좋은 환경은 Eclipse 입니다.  android-sdk 에서 따로 plug-in 을 제공하고 공식문서에서 기본으로 설명하는 것이기 때문에 가장 좋은 환경이라고 할 수 있습니다. 이클립스는 기본적으로 진화된 Emacs 라고 불릴정도로 많은 기능과 다양한 플러그-인 쉬운 UI 인터페이스등 정말 좋은 IDE라고 할 수 있습니다.

그럼에도 불구하고 나는 독하게 Emacs 를 쓰시겠다고 하는 분들만 아래에 쓰여질 내용을 보시면 됩니다.

1.  Emacs 를 Android 개발 환경으로 쓸려고 하면 android-mode 를 설치해야 합니다. git 가 설치되어 있다고 가정하고

git clone git://github.com/remvee/android-mode.git


과 같이 입력합니다. 그러면 android-mode 라는 디렉토리가 생깁니다. 제 경우에는 그 디렉토리를 "~/.emacs.d/android-mode" 로 복사해줬습니다.

2. 그리고  저번 포스팅인 "[Android] Snow Leopard 에 SDK 설치하기" 에서 설치됐던 Android SDK 가 위치한 곳 (제 경우에는 저번 포스트에서 "~/work/android" 였습니다.) "PATH_ANDROID_SDK/tools/lib"밀에 있는 android.el 을 "~/.emacs.d/android-mode" 밑에 같이 복사해 줍니다.

3. 그리고  .emacs 파일에 다음과 같이 추가해 줍니다.

(add-to-list 'load-path "~/.emacs.d/android-mode")
(require 'android-mode)
(require 'android)
(setq android-mode-sdk-dir "~/work/android")

이렇게 하면 android-mode 의 기능과 android 에서 자체적으로 지원하는 android 기능을 두가지 다 쓸 수가 있습니다.

이제 실제로 프로젝트를 만들어 보기로 하지요. http://developer.android.com/guide/developing/other-ide.html 이클립스를 쓰지 않고 다른 IDE 를 쓸 경우에 참조해야 하는 곳입니다. 그중에서 프로젝트 만드는 것을 참조하기로 하겠습니다.

android create project \
--target <target_ID> \
--name <your_project_name> \
--path path/to/your/project \
--activity <your_activity_name> \
--package <your_package_namespace>
라는 식으로 만들게 되어 있습니다. 다 일반적인 내용이고 실제로 몇번 만들어 보시면 어떤식으로 돌아가는지 아실 수 있습니다. 참조한 사이트에서 설명도 충분하고요. 다만 target 을 실제로 어떤것을 써야 할지 감이 안오실 수 있을 실텐데요. Terminal 창을 한개 여시고

android list targets.

라고 입력하시면 target 에 대한 설명이 자세히 나옵니다. 저번 포스팅 "[Android] Snow Leopard 에 SDK 설치하기" 에서 만들어본 testMachine 이라고 하는 AVD 는 타겟이 "10" 입니다.

이렇게 만들어진 프로젝트에서 "path/to/your/project/<your_project_name>/src/<your_package_namespace 를 갈라서 디렉토리로표현>/<your_activity_name>.java" 파일을 열어서

M-x

android-ant-install

라고 입력하시면 프로젝트가 컴파일이 되고 알아서 인스톨이 됩니다.

android-mode 에서 쓸만한 단축키를 보여드리겠습니다.

"\C-c \C-c" 를 입력한 상태에서

   
    ("d" . android-start-ddms)
    ("e" . android-start-emulator)
    ("l" . android-logcat)
    ("c" . android-ant-compile)
    ("i" . android-ant-install)
    ("r" . android-ant-reinstall)
    ("u" . android-ant-uninstall)

단축키에 따라서 실행되는 명령들 입니다.

여기까지는 쉽게 따라할 수 있는 부분입니다. 이제부터가 어려운데 특히나 Snow Leopard 에 설치하는 것이라 더 힘들었던것 같습니다.

위에 나와 있는 내용대로 포스팅을 하면 그냥 노트패드 같은 에디터에서 개발하는 것과 별 차이가 없습니다. 기본적으로 code generation 이나 code auto-completion 등이 되지 않으면 쓰기에 많이 불편합니다. 그래서 JDEE (Java Development Environment for Emacs) 를 설치해서 사용하게 됩니다.

Emacs + JDEE 가 딱 자바용 Eclipse 라고 보시면 됩니다. 다시금 Eclipse 를 설치해서 개발하면 편하다는 것을 말씀드리고 싶습니다.

1. JDEE 를 다운 받습니다. http://sourceforge.net/projects/jdee/files/ 에서 받으시고. 2.4.0.1 버젼을 받으시면 됩니다. 압축을 푸시고 "~/.emacs.d/jdee-2.4.0.1/" 로 복사해 두시면 됩니다.

2. ELIB 이 필요합니다. JDEE 를 받은곳에 포함되어 있습니다. http://sourceforge.net/projects/jdee/files/ 에서 받으시고 버젼은 1.0 입니다. elib-1.0.zip 을 받으시고 압축풀고 "~/.emacs.d/elib-1.0/" 으로 복사해 두시면 됩니다.

3. CEDET (Collection of Emacs Development Environment Tools) 이 필요합니다. http://cedet.sourceforge.net/ 에서 다운이 가능합니다. http://sourceforge.net/projects/cedet/files/ 에서 cedet-1.0pre7.tar.gz 을 다운 받으시고 압축을 푸신 다음에 "~/.emacs.d/cedet/" 으로 복사합니다.

4. USER_HOME 에 (제 경우에는 /Users/crazia ) 에 있는 .bash_profile 파일을 열고 다음과 같은 내용을 추가합니다.

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
export JAVAC=$JAVA_HOME/bin/java

저장하고 Terminal 창을 한개 열고

source .bash_profile


이라고 바로 효과가 나타나게 해 줍니다.

5. 이제 .emacs 파일에 다음과 같은 내용을 추가해 줍니다.  (추가 설명을 해 가면서 붙이기 하겠습니다)

(add-to-list 'load-path "~/.emacs.d/cedet/common")
(add-to-list 'load-path "~/.emacs.d/cedet/contrib")
(require 'cedet)

JDEE 는 기본적으로 CEDET 을 필요로 합니다. CEDET 을 설정하는 부분입니다.

(add-to-list 'load-path "~/.emacs.d/elib-1.0")
(add-to-list 'load-path "~/.emacs.d/jdee-2.4.0.1/lisp")
(require 'jde)

elib 과 jdee 의 path 를 추가해 주는 부분입니다. 그리고 jde 를 불러줍니다.

(setq jde-run-mode-hook t)

이상하게 jde-mode-hook 이 안불려지는 버그가 있더군요. 그래서 추가해 줍니다. 강제적으로 mode-hook 을 불러서 실행해줍니다.

(setq
 jde-sourcepath '( "/Users/crazia/work/android/project" )
 jde-db-option-connect-socket '(nil "28380")
 jde-jdk-registry (quote (
              ("1.5" . "/System/Library/Frameworks/JavaVM.framework/Versions/1.5/")
              ("1.6" . "/System/Library/Frameworks/JavaVM.framework/Versions/1.6/")
              )
             )
 jde-jdk `("1.6")
)

jdk 버젼을 조정할 수 있게 구현해 주는 부분입니다. OSX 다 보니 java 가 깔려 있는 곳의 디렉토리가 일반적인 unix 와는 조금 다릅니다.

;; cua-mode 끄기
(cua-mode nil)

\C-RET 은 정말 편하게 쓸 수 있는 단축키 인데 cua-mode 가 항상 점유하고 있으면서 바꿔지지도 않습니다. 아예 cua-mode 를 꺼버리면 편하게 쓸 수 있습니다.

(add-hook 'jde-mode-hook
          (lambda()
            (define-key jde-mode-map [(control return)] 'jde-complete)
        (define-key jde-mode-map [(meta return)] 'jde-complete-minibuf)
        (define-key jde-mode-map [(shift return)] 'jde-complete-in-line)))

자동 완성 단축키를 지정합니다. 제일 많이 쓰는 것이 "\C-RET" 다 보니 그 단축키를 jde-complete 함수에 묶었습니다.

이제부터 Emacs 에서 Android 개발이 쉬워지게 세팅을 끝냈습니다.