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
その他のコマンド
その他のサブコマンドとして 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 文を自動生成するのとか便利かなと思っている。