現在の様子:
Java 対応の電話 (Android ではなく、MIDlet ベースの「ダム電話」) 用の小さなアプリケーションを作成しています。アプリケーションは次のように構成されています。
- コア機能を備えた「インフラストラクチャ」
- タイプ A のモジュール ( interface を実装するクラス
ModuleA
) - タイプ B のモジュール ( interface を実装するクラス
ModuleB
)
タイプ A および B のモジュールは基本的に、ユーザーがリストから選択したものに基づいてインフラストラクチャでインスタンス化されるクラスであり、独自の方法で処理を行います。「戦略パターン」を考える。ユーザーがアプリケーションを使用しているとき、彼女はインフラストラクチャによって提供される画面を探索し、タイプ A のモジュールのリストに到達します (それらのタイトルを確認します)。次に、モジュールの 1 つを選択します。モジュールはインスタンス化され、彼女のために何かを行います。
私が望んでいること
インフラストラクチャ全体を JAR ファイルにパッケージ化することが可能かどうか (可能であればその方法) を考えていましたが、タイプ A のモジュールとタイプ B のモジュールを他の JAR ファイルに保持し、将来デバイスにインストールできるようにします (インフラストラクチャのアドオンなど)。私はこのシナリオを考えています:
- ユーザーがインフラストラクチャをインストール
- ユーザーは、インフラストラクチャと同時に利用できる「スターター」アドオンをインストールします
- 数週間後、ユーザーがインストールできる「特別なクリスマス モジュール」などの新しいアドオンが開発者によって作成されるため、既にデバイスにインストールされているインフラストラクチャは、アドオン内のモジュールを一覧表示します。
- 1 年後、他の機能やアイデアを備えたモジュールを含む別のアドオンが公開されました
まず、そのようなアドオンをモバイル デバイスにインストールできますか? MIDlet クラスを含める必要がありますか (何もしないか、インフラストラクチャに通知します)? インフラストラクチャは、アプリケーションのアドオンを含む JAR を検出できますか? または、インフラストラクチャは、他の JAR にパックされたクラスと対話できますか?
注: 有用な MIDlet クラスを含むのはインフラストラクチャ JAR だけです。また、アドオンには、タイプ A のモジュールとタイプ B のモジュールの任意の組み合わせが含まれます。
可能な解決策?(不完全ですが)
おそらくアドオンは、デバイス自体の MIDlet アプリケーションのように見え、動作し、匂いがするので、通常の MIDlet アプリケーションとしてインストールできます。アドオンは、インフラストラクチャと同じスイートの一部として自身を宣言できるため、そのレコード ストレージに書き込むことでインフラストラクチャに存在を通知できます (MIDletスイートごとにレコード ストレージがあることは理解しています)。インフラストラクチャは新しいレコードを読み取り、追加のモジュールがあることを認識します。アドオン MIDlet JAR にバンドルされているクラスにアクセスしてインスタンス化できますか?