Androidでもmainメソッドを実行することができる。実行するためにはdalvikコマンドを使用するか、app_processコマンドを使用する。Androidフレームワークに含まれる機能を利用したい場合はapp_processを使うと良い。
##シェルから実行する場合
コマンドから実行する場合は以下のように環境変数CLASSPATHを設定してから実行する。dalvikの場合は-cpが使えるが、app_processの場合は使用できない。
(pmやamコマンドの中身とやっていることは一緒)
###dalvikを使用する場合
export CLASSPATH=/data/app/<APK FILE NAME>
dalvik <MAIN CLASS NAME> <ARGS>...
###app_processを使用する場合
export CLASSPATH=/data/app/<APK FILE NAME>
app_process . <MAIN CLASS NAME> <ARGS>...
##Androidアプリから実行する場合
外部コマンドの実行方法については割愛するが、ProcessBuilderの環境変数の設定で、CLASSPATHに対してApplicationInfo#sourceDirを設定するとよい。ApplicationInfoはContext#getApplicationInfo()で取得でき、ApplicationInfo#sourceDirでAPKファイルのパスが取得できる。
##利用目的
app_processをrootで実行できるならば、パッケージの強制停止やサイレントインストールなど、PackageManagerやActivityManagerを特権で呼び出すのも可能である。