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ではコマンドが受け付けない)。