Emacs에서 Android 개발 환경 사용

AOSP에는 Emacs에서 Android 개발환경을 사용할 수 있도록 몇몇 el file들을 제공하는데, platform  module build를 주로 하게 되는 나로써는 사용에 부족함이 없는 것 같다. Module build와 기본적인 ADB 조작을 지원하는 이 script들의 기능이 부족하다고 느낀다면 Android 개발환경을 보다 적극적으로 지원하는 android-mode와 같은 project를 고려해 보는것도 좋을 것이다.

buildspec.mk 설정

사실 이 기능은 그동안 사용하지 않았었는데, AOSP에서 지원하는 el script들을 사용하려면 설정해 주어야 한다. 간단한 과정을 거쳐 설정해 놓고 보니 shell에서도 사전설정 없이 ‘make target’ command만으로 build를 할 수 있어서 편하다. 대신 ‘cd $OUT’이나 ‘croot’ 같은 이동 command들을 사용할 수 없다는 것은 불편한 점이다.

<ANDROID_ROOT>/build/buildspec.mk.default file을 복사해서 환경에 맞게 수정한 다음 <ANDROID_ROOT> 위치에 놓아두면 build 명령을 내릴때 자동으로 참조된다. 기본적으로 TARGET_PRODUCT, TARGET_BUILD_VARIANT 정도만 수정하면되는데 특이한 build환경을 사용하고 있다면 나머지 항목들은 읽어보고 자신에 맞게 수정하자.

# Choose a product to build for. Look in the products directory for ones
# that work.
ifndef TARGET_PRODUCT
  TARGET_PRODUCT:=product_name
endif

# Choose a variant to build. If you don't pick one, the default is eng.
# User is what we ship. Userdebug is that, with a few flags turned on
# for debugging. Eng has lots of extra tools for development.
ifndef TARGET_BUILD_VARIANT
  TARGET_BUILD_VARIANT:=eng
endif

el file들 복사 및 설정

<ANDROID_ROOT>/development/ide/emacs/ 안에 있는 file들을 Emacs 환경 directory로 복사한 다음 해당 file이 load되도록 init file을 수정한다.

mkdir ~/.emacs.d/android.el
cp <ANDROID_ROOT>/development/ide/emacs/*.el ~/.emacs.d/android.el/ android-common.el android-compile.el android-host.el

다음을 init file에 붙여 넣으면 된다.

; Load Android tools
(add-to-list 'load-path "~/.emacs.d/android.el/")
(require 'android-host)
(require 'android-compile)


사용

편집 중인 file의 module을 build하려면 ‘M-x android-compile’을 입력 하면 된다. 그 외의 ADB에 관련한 명령어 들은 android-host.el script에 설명되어 있다.

;; C-x a a android-adb-root
;; C-x a r android-adb-remount
;; C-x a s android-adb-sync
;; C-x a b android-adb-shell-reboot-bootloader
;; C-x a f android-fastboot-flashall