android-mode.elを使う

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