{"id":1034,"date":"2014-08-27T15:08:19","date_gmt":"2014-08-27T06:08:19","guid":{"rendered":"http:\/\/43.203.250.216\/?p=1034"},"modified":"2025-10-01T16:25:41","modified_gmt":"2025-10-01T07:25:41","slug":"android-emacs-android-host-el-%ea%b8%b0%eb%8a%a5-%ec%b6%94%ea%b0%80","status":"publish","type":"post","link":"https:\/\/litcoder.com\/?p=1034","title":{"rendered":"Android emacs (android-host.el) \uae30\ub2a5 \ucd94\uac00"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>AOSP\uc5d0\uc11c \uc81c\uacf5\ub418\ub294 Emacs\uc6a9 Andorid \uac1c\ubc1c\ud658\uacbd\uc744 \uc124\uc815\ud55c \uc774\ud6c4(<a title=\"Emacs\uc5d0\uc11c Android \uac1c\ubc1c \ud658\uacbd \uc0ac\uc6a9\" href=\"https:\/\/litcoder.com\/?p=1021\">\uc774 post \ucc38\uc870<\/a>) \uc798 \ubaa8\ub974\ub294 LISP\uc744 \ub354\ub4ec\uc5b4 \uac00\uba70 \ucd94\uac00\ud55c \uba87 \uac00\uc9c0 \uae30\ub2a5\uc744 \uc18c\uac1c\ud569\ub2c8\ub2e4.<\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>adb reboot <\/strong>(M-x android-adb-reboot)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Module\ub4f1\uc744 \ubcc0\uacbd\ud55c \ud6c4\uc5d0 device\ub97c reset\ud558\ub294 \uba85\ub839\uc5b4\uac00 \uc5c6\uc5b4\uc11c \ucd94\uac00\ud588\ub2e4. \uc774 \uae30\ub2a5\uc758 \uc7a5\uc810\uc744 \uad73\uc774 \uaf3d\uc790\uba74 shell\uc744 \ub530\ub85c \ub6f0\uc6b0\uc9c0 \uc54a\uace0 \ub9ac\ubd93\uc744 \ud560\uc218 \uc788\ub2e4\ub294\uac70&#8230;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"eclipse\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">(defun android-adb-reboot ()\n  \"Execute 'adb reboot'.\"\n  (interactive)\n  (android-adb-command \"reboo<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Module push <\/strong>(M-x android-adb-push-module)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Compile\ud55c module\uc744 target\uc5d0 push \ud560 \ub54c \uc0ac\uc6a9\ud55c\ub2e4. Command\ub97c \uc785\ub825\ud558\uba74 push \ud560 source\uc640 target\uc744 \ubb3c\uc5b4\ubcf4\uace0 adb push command\ub97c \uc2e4\ud589\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"eclipse\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">(defun android-adb-push-module (source target)\n  \"Push specified module into target path.\"\n  (interactive \"fSource: \\nsTarget: \")\n\n  (android-adb-root)\n  (android-adb-remount)\n  (android-adb-command\n    (concat \"push \" source \" \" target) 'p))<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Module push Hotkey <\/strong>&nbsp;(C-x a p)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704\uc758 android-adb-push-module \ud568\uc218\ub97c \uc4f0\ub2e4\ubcf4\ub2c8 path\ub97c \uc785\ub825\ud558\ub294\uac8c \ubb34\ucc99 \uadc0\ucc2e\ub2e4. android-compile \uba85\ub839\uc5b4\ub97c \uc218\ud589\ud574\uc11c \ub9cc\ub4e4\uc5b4\uc9c0\ub294 \ucd9c\ub825 \ubc84\ud37c\uc5d0\uc11c \uc704\uc758 \ub2e8\ucd95\ud0a4\ub85c target\uc758 \ud574\ub2f9 directory\ub85c module\uc744 push\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Install: out\/target\/product\/TARGET_DEVICE\/system\/xxx\/yyy.zz<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucd9c\ub825 \ubc84\ud37c\ub85c \uc774\ub3d9\ud574\uc11c \ucd9c\ub825\ub41c \uacb0\uacfc\ubb3c \uc704\uc5d0 cursor\ub97c \ub193\uace0 &#8216;C-x a p&#8217;\ub97c \uc785\ub825\ud558\uba74 \uadf8 \uacbd\ub85c\ub97c \uc77d\uc5b4\uc11c target\uc73c\ub85c push \ud55c\ub2e4. Source\uc758 path\uc5d0\uc11c target \uc704\uce58\ub97c \uc77d\uc5b4 \uc624\uac8c \ub418\uc5b4 \uc788\uc5b4\uc11c \ud2b9\ubcc4\ud55c \uc785\ub825\uc774 \ud544\uc694 \ud558\uc9c0 \uc54a\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"eclipse\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">(define-key map (kbd \"p\") 'android-adb-push-module-at-point)\n...\n\n(defun android-adb-push-module-at-point ()\n  \"Push module path at cursor point an push to the target path.\"\n  (interactive)\n\n  (let*\n    (\n      (sourcepath (concat (android-find-build-tree-root) (thing-at-point 'filename)))\n      (targetpath (substring sourcepath (string-match \"\\\/system\" sourcepath) nil)))\n    (android-adb-push-module sourcepath targetpath)))<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\uccb4 \uc218\uc815\ub0b4\uc5ed\uc744 \ud3ec\ud568\ud558\ub294 \ud30c\uc77c: <a href=\"http:\/\/litcoder.com\/wp-content\/uploads\/2014\/08\/android-host.el_.txt\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1051\" src=\"http:\/\/litcoder.com\/wp-content\/uploads\/2014\/08\/1408382052_12.File_.png\" alt=\"icon_text_file\" width=\"18\" height=\"18\">&nbsp;android-host.el<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>AOSP\uc5d0\uc11c \uc81c\uacf5\ub418\ub294 Emacs\uc6a9 Andorid \uac1c\ubc1c\ud658\uacbd\uc744 \uc124\uc815\ud55c \uc774\ud6c4(\uc774 post \ucc38\uc870) \uc798 \ubaa8\ub974\ub294 LISP\uc744 \ub354\ub4ec\uc5b4 \uac00\uba70 \ucd94\uac00\ud55c \uba87 \uac00\uc9c0 \uae30\ub2a5\uc744 \uc18c\uac1c\ud569\ub2c8\ub2e4. adb reboot (M-x android-adb-reboot) Module\ub4f1\uc744 \ubcc0\uacbd\ud55c \ud6c4\uc5d0 device\ub97c reset\ud558\ub294 \uba85\ub839\uc5b4\uac00 \uc5c6\uc5b4\uc11c \ucd94\uac00\ud588\ub2e4. \uc774 \uae30\ub2a5\uc758 \uc7a5\uc810\uc744 \uad73\uc774 \uaf3d\uc790\uba74 shell\uc744 \ub530\ub85c \ub6f0\uc6b0\uc9c0 \uc54a\uace0 \ub9ac\ubd93\uc744 \ud560\uc218 \uc788\ub2e4\ub294\uac70&#8230; Module push (M-x android-adb-push-module) Compile\ud55c module\uc744 target\uc5d0 push \ud560 \ub54c \uc0ac\uc6a9\ud55c\ub2e4. Command\ub97c [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[2,5],"tags":[11,41,73],"class_list":["post-1034","post","type-post","status-publish","format-standard","hentry","category-android","category-programming","tag-android","tag-emacs","tag-lisp"],"jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1021,"url":"https:\/\/litcoder.com\/?p=1021","url_meta":{"origin":1034,"position":0},"title":"Emacs\uc5d0\uc11c Android \uac1c\ubc1c \ud658\uacbd \uc0ac\uc6a9","author":"litcoder","date":"2014\ub144 8\uc6d4 10\uc77c","format":false,"excerpt":"AOSP\uc5d0\ub294 Emacs\uc5d0\uc11c Android \uac1c\ubc1c\ud658\uacbd\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \uba87\uba87 el file\ub4e4\uc744 \uc81c\uacf5\ud558\ub294\ub370, platform \u00a0module build\ub97c \uc8fc\ub85c \ud558\uac8c \ub418\ub294 \ub098\ub85c\uc368\ub294 \uc0ac\uc6a9\uc5d0 \ubd80\uc871\ud568\uc774 \uc5c6\ub294 \uac83 \uac19\ub2e4. Module build\uc640 \uae30\ubcf8\uc801\uc778 ADB \uc870\uc791\uc744 \uc9c0\uc6d0\ud558\ub294 \uc774 script\ub4e4\uc758 \uae30\ub2a5\uc774 \ubd80\uc871\ud558\ub2e4\uace0 \ub290\ub080\ub2e4\uba74 Android \uac1c\ubc1c\ud658\uacbd\uc744 \ubcf4\ub2e4 \uc801\uadf9\uc801\uc73c\ub85c \uc9c0\uc6d0\ud558\ub294\u00a0android-mode\uc640 \uac19\uc740 project\ub97c \uace0\ub824\ud574 \ubcf4\ub294\uac83\ub3c4 \uc88b\uc744 \uac83\uc774\ub2e4. buildspec.mk \uc124\uc815 \uc0ac\uc2e4 \uc774 \uae30\ub2a5\uc740\u2026","rel":"","context":"&quot;Android&quot;\uc5d0\uc11c","block_context":{"text":"Android","link":"https:\/\/litcoder.com\/?cat=2"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1489,"url":"https:\/\/litcoder.com\/?p=1489","url_meta":{"origin":1034,"position":1},"title":"Android Studio\uc5d0\uc11c Googletest \uc0ac\uc6a9\uc744 \uc704\ud55c \uc124\uc815","author":"litcoder","date":"2016\ub144 7\uc6d4 1\uc77c","format":false,"excerpt":"Android Studio\ub294 \ub0b4 PC\uc5d0\uc11c \uc880 \ub290\ub9ac\uae34 \ud558\uc9c0\ub9cc, \ub2e4\ub978 IDE\ub4e4\uc5d0 \ube44\ud574\uc11c\ub294 Emacs key binding\uc774 \ube44\uad50\uc801 \uc798\ub418\uc5b4 \uc788\uc5b4\uc11c \ub9cc\uc871 \ud558\uba74\uc11c \uc870\uae08\uc529 \ubc30\uc6cc\uac00\uace0 \uc788\ub2e4. NDK\ub85c JNI\uc5d0\uc11c \ubd88\ub7ec\ub2e4 \uc4f8 native code\ub97c \uad6c\ud604\ud558\ub2e4 \ubcf4\ub2c8 Googletest\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574 \ub9e4\ubc88 device\ub85c push \ud558\uace0 \uc2e4\ud589\ud558\ub294 \uacfc\uc815\uc774 \uaf64\ub098 \ubc88\uac70\ub85c\uc640\uc11c script\ub85c \ub9cc\ub4e4\uc5b4 \ubcf4\uc558\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 Android Studio\uc5d0\uc11c Googletest\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud55c\u2026","rel":"","context":"&quot;Android&quot;\uc5d0\uc11c","block_context":{"text":"Android","link":"https:\/\/litcoder.com\/?cat=2"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2016\/07\/androidstudio_edittool.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2016\/07\/androidstudio_edittool.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2016\/07\/androidstudio_edittool.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2016\/07\/androidstudio_edittool.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1337,"url":"https:\/\/litcoder.com\/?p=1337","url_meta":{"origin":1034,"position":2},"title":"MinnowboardMAX\uc5d0 Android \uc62c\ub824 \ubcf8 \ub0b4\uc6a9 \uc815\ub9ac","author":"litcoder","date":"2015\ub144 9\uc6d4 19\uc77c","format":false,"excerpt":"Android \/ Chromium OS \/ Windows\ub97c \uc62c\ub824 \ubcfc \uc218 \uc788\ub294 Intel Baytrail \uae30\ubc18\uc758 \uac1c\ubc1c\ubcf4\ub4dc\uc778 MinnowboardMAX\uc5d0 Android 5.1\uc744 install\ud558\ub294 \uacfc\uc815\uc744 \uc124\uba85\ud55c\ub2e4. \ud544\uc694\ud55c \uac83 \ub4e4 Minnowboard MAX - \ud310\ub9e4\ud558\ub294 \uacf3, 2015\ub144 9\uc6d4 \ud604\uc7ac \uad6d\ub0b4\uc5d0\uc11c \ud310\ub9e4\ud558\ub294 \uacf3\uc740 \uc5c6\ub294\uac83 \uac19\ub2e4. FTDI cable - Serial \ucd9c\ub825\uc744 PC\uc5d0\uc11c \ubc1b\uae30 \uc704\ud574 guide \ubb38\uc11c\uc5d0\ub294 TTL-232R\uc744 \uc0ac\uc6a9\ud558\ub77c\uace0 \u00a0\ub098\uc640 \uc788\ub294\ub370\u2026","rel":"","context":"&quot;Android&quot;\uc5d0\uc11c","block_context":{"text":"Android","link":"https:\/\/litcoder.com\/?cat=2"},"img":{"alt_text":"minnowboardMAX_connection","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2015\/09\/minnowboardMAX_connection.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1039,"url":"https:\/\/litcoder.com\/?p=1039","url_meta":{"origin":1034,"position":3},"title":"Cygwin\uc5d0\uc11c Android systrace \uc2e4\ud589 \ubb38\uc81c","author":"litcoder","date":"2014\ub144 8\uc6d4 18\uc77c","format":false,"excerpt":"2014\ub144 8\uc6d4 \ud604\uc7ac, Cygwin\uc73c\ub85c systrace\ub97c \uc0ac\uc6a9\ud558\ub824\uace0 \ud558\uba74 zlib \uad00\ub828\ud55c error\uac00 \ub098\uba74\uc11c \ub3d9\uc791\ud558\uc9c0 \uc54a\ub294\ub2e4. $ python systrace.py -o output.html gfx input view wm am video hal dalvik capturing trace... done downloading trace... done Traceback (most recent call last): File \"systrace.py\", line 286, in <module> main() File \"systrace.py\", line 231, in main\u2026","rel":"","context":"&quot;Android&quot;\uc5d0\uc11c","block_context":{"text":"Android","link":"https:\/\/litcoder.com\/?cat=2"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":358,"url":"https:\/\/litcoder.com\/?p=358","url_meta":{"origin":1034,"position":4},"title":"Android device\uc5d0 quake\ub97c \uc62c\ub824\ubcf4\ub2e4","author":"litcoder","date":"2012\ub144 8\uc6d4 15\uc77c","format":false,"excerpt":"Quake\ub294 id software\uc5d0\uc11c \uc18c\uc2a4\ub97c \uacf5\uac1c\ud55c \uac8c\uc784\uc73c\ub85c \uc548\ub4dc\ub85c\uc774\ub4dc external \ub514\ub809\ud1a0\ub9ac\uc5d0 \ud568\uaed8 \ub4e4\uc5b4\uac00 \uc788\ub2e4. Android\uc758 \ub2e4\ub978 module\ub4e4\uacfc \ub9c8\ucc2c\uac00\uc9c0\ub85c \ub514\ub809\ud1a0\ub9ac\uc5d0\uc11c mm command\ub85c \uac04\ub2e8\ud788 \ucef4\ud30c\uc77c \ud560 \uc218 \uc788\uc73c\uba70, \uacb0\uacfc\ubb3c\uc740 \ub2e4\uc74c \ub450\uac1c\uc758 \ud30c\uc77c\ub85c \uc0dd\uc131\ub41c\ub2e4. out\/target\/product\/PRODUCT\/system\/app\/Quake.apk out\/target\/product\/PRODUCT\/system\/lib\/libquake.so \ud558\uc9c0\ub9cc \uc774 \ud30c\uc77c\ub4e4\uc744 push \ud574\uc8fc\uace0 \uc2e4\ud589\ud574\ub3c4 pak0.pak\ub97c \ucc3e\uc9c0\ubabb\ud55c\ub2e4\uba74\uc11c \uba48\ucd94\ub294\ub370, pocket quake\uc5d0 \ud544\uc694\ud55c \ud30c\uc77c\uc778 \uac83\uac19\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 http:\/\/quake.pocketmatrix.com\/readme.php\uc5d0 \uc788\uc73c\uba70, pak0.pak\ub294\u2026","rel":"","context":"&quot;Android&quot;\uc5d0\uc11c","block_context":{"text":"Android","link":"https:\/\/litcoder.com\/?cat=2"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":466,"url":"https:\/\/litcoder.com\/?p=466","url_meta":{"origin":1034,"position":5},"title":"Android NDK build architecture \ubcc0\uacbd\ud558\uae30","author":"litcoder","date":"2013\ub144 1\uc6d4 17\uc77c","format":false,"excerpt":"\uc544\ubb34 \uc124\uc815 \uc5c6\uc774 ndk\ub97c build \ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 arm\uc6a9 library\uac00 \ub9cc\ub4e4\uc5b4\uc9c4\ub2e4. $ <NDK_PATH>\/ndk-build Gdbserver : [arm-linux-androideabi-4.6] libs\/armeabi\/gdbserver Gdbsetup : libs\/armeabi\/gdb.setup Compile thumb : hello-jni <= hello-jni.c SharedLibrary : libhello-jni.so Install : libhello-jni.so => libs\/armeabi\/libhello-jni.so $ file obj\/local\/armeabi\/libhello-jni.so obj\/local\/armeabi\/libhello-jni.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not\u2026","rel":"","context":"&quot;Android&quot;\uc5d0\uc11c","block_context":{"text":"Android","link":"https:\/\/litcoder.com\/?cat=2"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/1034","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1034"}],"version-history":[{"count":9,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/1034\/revisions"}],"predecessor-version":[{"id":3645,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/1034\/revisions\/3645"}],"wp:attachment":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1034"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1034"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}