私は最初の実際の Android プロジェクトであるタクシー注文アプリケーションをほぼ完成させました。将来のリリースでは、一部の優れたプログラムが行うように、プログラミング コードとリソースの組み込みの自動更新を実装する予定です。http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.htmlに基づいて、簡単な例を実行することができました。Android/dalvik で Java クラスを動的にロードする方法は? Android アプリケーションから実行時にライブラリを動的にロードすることは可能ですか?. ここでは完全なコードは掲載しませんが、上記のリンクとよく似ています。メインの apk はランチャーとして機能し、SD カードから jar ファイルをロードし、そこから特別なクラスをロードし、オブジェクトをインスタンス化し、Java Reflect API を介してそのメソッドを呼び出します。これにより、単に ab AlertDialog が表示されます。
しかし、APIとして機能する、ランチャーとロードされたライブラリの両方で共通の基本Javaインターフェースを使用できるようにしたいと考えています。そこで、ランチャーとライブラリの両方で Problem というインターフェイスを宣言しようとしました。コードは次のようになります。
Class<?> problemClass = cl.loadClass("ru.homez.euler.Problem1");
Problem problem = (Problem)problemClass.newInstance();
problem.solve(this);
Dalvik VM はこれが好きではありません。
java.lang.IllegalAccessError: 検証済みクラスのクラス参照が予期しない実装に解決されました
これは、問題のインターフェイスがランチャーとライブラリの両方で定義されているために発生すると思います。ここでそのような問題を見てきました。これに対処する方法は?