5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

apkに含まれるmainメソッドを実行する

Posted at

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を特権で呼び出すのも可能である。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?