2

私の URLClassLoader 実装は PC でのみ動作するようですが、Android では動作しません。

try {

        Class<?> loadedClass = new URLClassLoader(
                new URL[] { new File("http://10.0.2.2/myphpfile.php").toURI().toURL() })
                .loadClass("MyClass");

        IInterface inter = (IInterface) loadedClass.getConstructor(
                String.class).newInstance("Hello");
        if (inter != null)
            System.out.println(inter.doSomething(2));
    } catch (Exception e) {
        e.printStackTrace();
    }

それはうまく動作しますが、Androidでは取得しています

java.lang.ClassNotFoundException: MyClass

インターネット許可が設定されています。

どうすればそれを機能させることができるか誰かが考えていますか?

4

1 に答える 1

2

DexClassLoaderURLClassLoader の代わりに使用します。

まず、jar ファイルに classes.dex を含める必要があります。次の回答があります。

dx --dex --output="JarProjectWithDex.jar" "JarProject.jar"

次に、URLClassLoader を DexClassLoader に置き換えて、同じ方法を続けます。

File jarFile = new File("/data/JarProjectWithDex.jar");
DexClassLoader loader = new DexClassLoader(jarFile.getPath(), getFilesDir().getPath(), null, this.getClassLoader());
Class<?> classToLoad = Class.forName("zordon.MegaZords", true, loader);
于 2014-11-28T18:14:55.393 に答える