1

これが私が達成したいことです:

プラグイン対応である必要がある Android アプリケーションを構築しています。私がする必要があるのは、Web サーバーから .java ファイルをダウンロードし、実行時にアプリケーション内でコンパイルして、クラスパスにロードすることです。プラグイン オブジェクトをストック オブジェクトと同じように使用できるので、使いやすさから Java を使用したいと考えています。

javax.tools のコンパイル方法を見てきましたが、DalvikVM では利用できません。それに代わる最良の方法は何ですか(同様の方法で機能します)?

編集:

現在 .bsh-script を使用しています。これは JVM で魅力的に動作し、Android デバイスでも動作するはずです (次にテストします)。

package de.hotware.beanshell.test;

import bsh.EvalError;
import bsh.Interpreter;


public class BeanShellTest {

    public static interface InterfaceTest {

        public void sayHello();

    }


    public static void main(String[] args) {
        try {
            Interpreter interpreter = new Interpreter();
            InterfaceTest res = (InterfaceTest) interpreter.eval("import de.hotware.beanshell.test.BeanShellTest.InterfaceTest;" +
                    "new InterfaceTest() {" +
                    "public void sayHello() { System.out.println(\"hello\");}" +
                    "}");
            res.sayHello();
        } catch(EvalError e) {
            e.printStackTrace();
        }
    }

    public void test() {

    }

}
4

1 に答える 1

3

次の 2 つのことを行う必要があります。

  1. JVM 内で実行している場合に行うすべてのこと。javacソースをダウンロードし、または同等の .class ファイルにコンパイルします。
  2. クラス ファイルを DEX 形式に変換します。これは、デバイス上でプログラムを実行することを意味しますがdx、これは実行可能ですが、特に大規模なプログラムの場合、少しメモリを消費する可能性があります。

これが完了したら、 を使用DexClassLoaderして DEX ファイルからコードをロードできます。

すべてを考慮すると、BeanShell の方が適していると思います。

于 2013-06-07T04:50:31.490 に答える