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