1 枚の Java ソースファイルだけで Android アプリを管理できるようにする rur コマンド

Android アプリもグリモンみたいにファイル 1 枚で gist とかで管理できたらいいなと思って、Java ファイル 1 枚からパッケージ作成したり端末にインストールしたりできるコマンドを作ってみた。

本格的に作るなら Processing みたいな Java をラップするような感じになるんだろうけど、実験として思いついたのをとりあえず作った感じです。

実装もぜんぜんたいしたことしてなくて、~/.rur 配下にプロジェクト毎にディレクトリを切って、android,adb,ant コマンドを実行しているだけ。

使い方

rur コマンドに実行権限がありパスが通っているディレクトリに置かれているのが前提。

rur init コマンドで Android アプリ用のソースファイルを生成する。

$ rur init MyActivity.java

MyActivity.java ができる。

$ cat MyActivity.java
package com.example.myactivity;

import android.app.Activity;
import android.os.Bundle;

public class MyActivity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

あとは好きなように編集して rur start すれば、コンパイル・端末インストール・アプリ起動までやってくれる。

$ rur start MyActivity.java

http://farm6.static.flickr.com/5287/5376389274_0a7e26a7ce.jpg

その他のコマンド

その他のサブコマンドとして debug, install, clean が使えて、該当する ant のタスクを実行してくれる。

$ rur debug   MyActivity.java
$ rur install MyActivity.java
$ rur clean   MyActivity.java

制限事項とか

複数ソースファイルにまたがったアプリとかには使えないし、res 配下のレイアウト定義や文言定義用の XML ファイルも使えない (手動で ~/.rur 配下をいじれば使えるけど)。

それと致命的な欠点として AndroidManifest.xml を考慮していなかったのでカメラを使ったりネットに接続したりといった権限を付与できないのに今気付いた。-u CAMERA とか -u INTERNET とかつければ AndroidManifest.xml をうまく書き換えてくれるようにしたい。

あと個人的に追加した UI 部品の import 文を書くのがめんどくさいので、android.jar を読み込んで足りない import 文を自動生成するのとか便利かなと思っている。