AOSP에서 제공되는 Emacs용 Andorid 개발환경을 설정한 이후(이 post 참조) 잘 모르는 LISP을 더듬어 가며 추가한 몇 가지 기능을 소개합니다.
adb reboot (M-x android-adb-reboot)
Module등을 변경한 후에 device를 reset하는 명령어가 없어서 추가했다. 이 기능의 장점을 굳이 꼽자면 shell을 따로 뛰우지 않고 리붓을 할수 있다는거…
(defun android-adb-reboot () "Execute 'adb reboot'." (interactive) (android-adb-command "reboo
Module push (M-x android-adb-push-module)
Compile한 module을 target에 push 할 때 사용한다. Command를 입력하면 push 할 source와 target을 물어보고 adb push command를 실행한다.
(defun android-adb-push-module (source target) "Push specified module into target path." (interactive "fSource: \nsTarget: ") (android-adb-root) (android-adb-remount) (android-adb-command (concat "push " source " " target) 'p))
Module push Hotkey (C-x a p)
위의 android-adb-push-module 함수를 쓰다보니 path를 입력하는게 무척 귀찮다. android-compile 명령어를 수행해서 만들어지는 출력 버퍼에서 위의 단축키로 target의 해당 directory로 module을 push한다.
Install: out/target/product/TARGET_DEVICE/system/xxx/yyy.zz
출력 버퍼로 이동해서 출력된 결과물 위에 cursor를 놓고 ‘C-x a p’를 입력하면 그 경로를 읽어서 target으로 push 한다. Source의 path에서 target 위치를 읽어 오게 되어 있어서 특별한 입력이 필요 하지 않다.
(define-key map (kbd "p") 'android-adb-push-module-at-point) ... (defun android-adb-push-module-at-point () "Push module path at cursor point an push to the target path." (interactive) (let* ( (sourcepath (concat (android-find-build-tree-root) (thing-at-point 'filename))) (targetpath (substring sourcepath (string-match "\/system" sourcepath) nil))) (android-adb-push-module sourcepath targetpath)))
전체 수정내역을 포함하는 파일: android-host.el