2012-01-15 11 views
1

端末にdalvikvmをインストールして起動しようとしています。ターミナルはam.jarでdalvikvmを実行します

dalvikvm -cp system/framework/am.jar com.android.commands.am.Am 
dalvikvm cannot find a main class

は、だから私はdalvikvmに「スタートしています」を実行しようとした:

dalvikvm -cp /system/app/Calculator.apk com.android.calculator2/.Calculator 

そして、失敗のメッセージ来る:私はちょうどので、これを実行しようとした場合には動作しません。

本当にうまくいきます。しかし、私がアプリを起動しようとすると:

dalvikvm -cp system/framework/am.jar com.android.commands.am.Am start -n com.android.calculator2/.Calculator 

それは動作しません。

誰かが私を助けてくれますか?

答えて

2

ポイントのカップル:

  1. あなたは、端末からAndroidのアプリケーションを実行することはできません。 最初のコマンドでは、Calculatorクラス内にstatic void main(String [])メソッド が存在する場合は、そのメソッドを実行します。 は、この方法でアプリケーションを「実行」することはできません。

  2. amを使用するのは、端末から特定のアクティビティを開始する正しい方法です。提供されている "am"スクリプト(/ system/bin/am)をそのまま使用することができます。または、少なくとも、そのスクリプトを見て、正しく呼び出す方法を見てください。例えば

am start -n com.android.calculator2/.Calculatorはあなたがvogarでdalvikvmヘッドレスを実行することができます

+0

ありがとうございました。しかし、私はアプリからdalvikvmを始めたいと思う。そして私はそれが可能だと思います。 'dalvikvm -cp system/framework/am.jar com.android.commands.am.Am'を実行すると、端末に' am -help'を指定したときと同じメッセージになります。だから私はちょうどdalvikvmから始まり、私のアプリを起動するコマンドとしてamを与えたいと思う。私はあなたのやり方が分かりましたが、私はそれが必要です。私はdalvikvmを修正して、既存のdalvikvm上にappとして私のdalvikvmを起動したいからです。 – Aprel

+0

おそらく、zygoteを見たいと思っています。私はdalvikの変更されたバージョンからamコマンドを実行するだけで、あなたが望むことをするとは思えません。私が推測していたのであれば、普通のdalvikを使っていつものようにアンドロイドアプリを起動してから、execのシステムコールを使って新しいdalvikvmインスタンスをロードして実行し、アンドロイドアプリケーションが必要とする様々なハンドルこれは、接合子プロセスの働きと同様です。 – JesusFreke

+1

これはおそらく非常に悪い考えです。すべてのアンドロイドプロセスは共有メモリを共有しているため、利用できません。たとえば、すべてのフレームワーククラスは一度ロードされ、すべてのdalvikプロセスはその同じ共有メモリの部分を見ることができます。あなたの新しいdalvik VMインスタンスは、これらすべてのフレームワーククラス自体をロードする必要があり、そのため、あなたのアプリケーションのメモリ使用量が過剰になります。 – JesusFreke

0

やりたいはずです。 SVNからビルドする必要があります。あらかじめ作られた瓶は時代遅れです!

+0

うーん...どうしてそんなものが必要なの?私は携帯電話を持っていて、端末を使うことができます。 – Aprel

関連する問題