2

状況:

私は、実際に単独でベース サンドボックスとして機能する Android および PC ゲームの概念実証を開発しています。実際の「ゲーム」は、提供されたサンドボックスの上に重ねられた mod です。私が理解できないのは、アプリケーションのインスタンスに開発者コードを正確に挿入する方法です。

modは、元のアプリケーション クラス ファイルをコンパイルして書き直して再配布するのではなく、サンドボックスの既に実行中のインスタンスにロードする必要があります。また、mod は独自のコードを導入しますが、開発者は特定のサンドボックス インフラストラクチャの特定の境界内で作業する必要があると予想されます。

私の考えた解決策:

最良の解決策は、サンドボックスと一緒にライブラリを作成することだと思いました。ライブラリには、サンドボックスが呼び出す方法を理解するクラスとインターフェースが含まれます。拡張と実装により、開発者は、開発者によって実装された外部クラスをインスタンス化しながら、独自のクラスの 1 つとしてコードに適合できるクラスをプログラムできます。 .

問題:

問題は、私がこのコンセプトのために計画した実行にあります。 ビジョンは、ユーザーが mod をダウンロードして mods\ フォルダーに移動し、アプリケーションを起動して、[ゲームをプレイ] をクリックし、mods\ フォルダー内のすべてのプレイ可能な mod ファイルのドロップダウン メニューをクリックして、それをロードできることです。遊ぶその場で。各ゲームはおなじみの UI スタイルを使用し、基本的なグラフィック アーキテクチャはおなじみで、ボタンの応答性、プレーヤーまたはユニットの動き、hud、アイコンの並べ替えはすべておなじみの予測可能な才能ですが、各 mod には独自の実際の機能があります。完全に別の開発者の心からのゲームプレイ体験。 私が把握できないこと別の開発者からのコードを元のアプリケーションに動的に挿入する方法であり、クラスパスにも元のパッケージにも含まれていないため、認識されます。

4

2 に答える 2

2

技術的には、DexClassLoaderを使用できます。

法的には、自己変更コードに関するGoogle Play ポリシーにアプリが抵触する可能性があります。

于 2013-06-12T06:20:41.203 に答える