Android アプリケーションのプラグイン アーキテクチャをまとめようとしています。apk「プラグイン」ファイルのディレクトリを調べ、それらを DexClassLoader にロードし、メソッドを呼び出して DerivedLibraryObjects の配列を取得するホスト アプリケーションがあります。
問題は、DerivedLibraryObject が外部 JAR ライブラリに含まれる基本クラスを拡張することだと思います。したがって、ホストとプラグインの両方がこの JAR を参照します。DerivedLibraryObjects の配列を取得しようとすると、次の例外が発生します。
04-01 14:26:57.996: ERROR/AndroidRuntime(23386): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
私が収集したものから、これはプラグイン内のオブジェクトがホスト内のオブジェクトと一致しないことを意味します。ただし、ホスト アプリケーションとプラグイン アプリケーションの両方が、まったく同じ jar ファイルのコピーにリンクしています。Object を単純に拡張したオブジェクトを返すと、コードは正常に機能しますが、DerivedLibraryObject の処理を開始するとすぐに、このエラーがスローされます。
誰か提案はありますか?