android-mode.elとはEmacs上でAndroidアプリを開発する為に作られたelispパッ ケージです。android-mode.elは下記サイトで公開されています。
https://github.com/remvee/android-mode
下記の人向けだと思います。
* Eclipse等が用意するEmacsバインドは使いづらい * Emacsで使用しているツールを使いたい
1. インストール方法
gitクライアントでパッケージを取得します。
$ git clone https://github.com/remvee/android-mod $ cp android-mode/android-mode.el [パッケージの置き場所]
なお、[パッケージの置き場所]は.emacsに記載されているものです。私の環境 では$HOME/.emacs.d配下を[パッケージの置き場所]にしています。
;; emacs lisp directory path (setq load-path (append (list (expand-file-name "~/.emacs.d/") ) load-path))
.emacsにandroid-mode.elの設定を追記します。android-mode-sdk-dirという 変数にAndroid SDKのディレクトリを指定します。私の環境ではAndroid StudioがダウンロードしてきたAndroid SDKを流用するため、Android Studio 配下のディレクトリを指定しています。なお、Android Studioのデフォルトの インストールディレクトリは/Applications/Android Studioですが、Android とStudioのスペースをandroid-mode.elが上手く処理できないため、 /Applications/AndroidStudioにリネームしています。
;; android-mode (require 'android-mode) (setq android-mode-sdk-dir "/Applications/AndroidStudio.app/sdk/")
emacs上でM-x android-modeを実行すると下記メッセージが表示されAndroid modeが有効になります。
Android mode enabled
2. android-mode.elのコマンド
C-c C-cから各種コマンドを実行します。各ショートカットはandroid-modeが 有効な場合に使用できます。
defun | ショートカット | 概要 |
---|---|---|
android-start-ddms | C-c C-c d | DDMSの起動 |
android-start-emulator | C-c C-c e | エミュレータの起動 |
android-logcat | C-c C-c l | logcatの起動 |
android-ant-clean | C-c C-c C | プロジェクトのクリーン |
android-ant-test | C-c C-c t | テストプロジェクトのビルド |
android-ant-debug | C-c C-c c | プロジェクトのビルド |
android-ant-installd | C-c C-c i | パッケージのインストール |
android-ant-reinstall | C-c C-c r | 未実装 |
android-ant-uninstall | C-c C-c u | パッケージの再インストール |
android-start-app | C-c C-c a | Activityの起動 |
android-create-project | なし | プロジェクトの作成 |
3. 使用例
Hello, WorldとLog.dで表示するアプリを作成します。
3.1. android-create-project
M-x android-create-projectを実行。あらかじめemacsにanythingを導入して おくことで、Targetの一覧をバッファに表示でき、選択可能になります。
Path: ~/Documents/workspace/HelloWorld Package: com.hiroom2.helloworld Activity: HelloWorldActivity Target: #anythingのバッファで選択(便利)
作成に成功するとdiredモードのバッファが表示されます。
total used in directory 24 available 58217828 drwxr-xr-x 12 hiroom2 staff 408 Feb 7 14:37 . drwxr-xr-x 25 hiroom2 staff 850 Feb 7 14:37 .. -rw-r--r-- 1 hiroom2 staff 656 Feb 7 14:37 AndroidManifest.xml -rw-r--r-- 1 hiroom2 staff 698 Feb 7 14:37 ant.properties drwxr-xr-x 2 hiroom2 staff 68 Feb 7 14:37 bin -rw-r--r-- 1 hiroom2 staff 3930 Feb 7 14:37 build.xml drwxr-xr-x 2 hiroom2 staff 68 Feb 7 14:37 libs -rw-r--r-- 1 hiroom2 staff 416 Feb 7 14:37 local.properties -rw-r--r-- 1 hiroom2 staff 781 Feb 7 14:37 proguard-project.txt -rw-r--r-- 1 hiroom2 staff 563 Feb 7 14:37 project.properties drwxr-xr-x 8 hiroom2 staff 272 Feb 7 14:37 res drwxr-xr-x 3 hiroom2 staff 102 Feb 7 14:37 src
なお、Eclipseで作成したプロジェクトをandroid-mode.elで使用するには、 android update projectを実行する必要があります(build.xmlが必要)。
3.2. エミュレータの起動
Android modeが有効な状態でC-c C-c eを押す、あるいはM-x android-start-emulatorを実行することでエミュレータを起動することができ ます。ここでもanythingがAVDの一覧を表示してくれるので、項目を選択する ことでエミュレーターを起動できます。
AVDが存在しない場合は下記メッセージが表示されます。
no Android Virtual Devices found
3.3. プロジェクトのビルド
C-c C-c cを押す、あるいはM-x android-ant-debugを実行することでプロジェ クトのビルドができます。HelloWorldActivityは以下の通りです。
package com.hiroom2.helloworld; import android.util.Log; import android.app.Activity; import android.os.Bundle; public class HelloWorldActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.d("HelloWorldActivity", "Hello, World"); } }
ビルドに失敗する場合はcompilationバッファから該当箇所に飛びましょう。
3.4. パッケージのインストール
C-c C-c iを押す、あるいはM-x android-ant-installdを実行することでパッ ケージのインストールができます。 android-ant-installdは起動しているAVDが一つ(adb devicesでonlineになっ ているデバイスが一つ)であることを前提としています。
<snip> install: Installing <PATH>/HelloWorld/bin/HelloWorldActivity-debug.apk onto default emulator or device... 1873 KB/s (37194 bytes in 0.019s) * daemon not running. starting it now on port 5037 * * daemon started successfully * pkg: /data/local/tmp/HelloWorldActivity-debug.apk Success installd: BUILD SUCCESSFUL Total time: 6 seconds
3.5. Activityの起動
C-c C-c aを押す、あるいはM-x android-start-appを実行することでActivity の起動ができます。
Starting activity: com.hiroom2.helloworld.HelloWorldActivity
3.6. logcatの実行
C-c C-c lを押す、あるいはM-x android-logcatを実行することでlogcatの実 行ができます。ここでfを押すことで文字列によるフィルタリングが出来、cを 押すことで文字列のクリアができます。
D HelloWorldActivity(1394) Hello, World
3.7. DDMSの起動
C-c C-c dを押す、あるいはM-x android-start-ddmsを実行することでDDMSの 起動ができます。
4. NDKでの利用
custom_rules.xmlを用意することで、C-c C-c cでJNIビルドが可能になります。
<?xml version="1.0" encoding="UTF-8"?> <project> <target name="-pre-build"> <exec executable="ndk-build" failonerror="true"/> </target> </project>
ndk-gdbについてはemacs上で上手く動作させる方法が分かっておりません (gudではコマンドが受け付けない)。