2011-02-08 18 views
0

外部デクスファイルからアクティビティを読み込むことはできますか?私はいくつかのプラグインスタイルのアーキテクチャを考えています。ここでは、余分な機能を含むアクティビティやクラスを持つdex-fileをダウンロードすることでアプリケーションを拡張できます。Android:外部デクスからアクティビティをロード

DexClassLoaderとリフレクションを使用して、ダウンロードしたdex-fileからクラスのメソッドをロードして呼び出すことができました。しかし、私は何とかこのテクニックを使ってアクティビティをダウンロードして提示できますか?この新しいアクティビティをプログラムで登録して、インテントを使用して呼び出すことは可能ですか?

通常の手順でAPKを使用して他のアクティビティをインストールし、インテントを使用してメインアクティビティからロードするか、単にインストールしたアプリケーションを更新することは可能ですが(推奨される方法です)追加のクラスをいくつかダウンロードし、同じVM内のすべてを同じサンドボックスで実行して、既にインストールされているアプリケーションを拡張します。

フム、あなたは私が何を意味するか理解していないなら、私はこれは少し厄介だ引き起こし、知っている... :)

答えて

1

こんにちは、それは外部のDEX-ファイルから活動をロードすることは可能ですか?

正確ではありません。アクティビティは、アプリケーションのマニフェストであらかじめ定義されている必要があります。

JRubyとRubotoが使用するアプローチを使用できます。異なる実装で再利用されるマニフェストには1つのアクティビティがあります。私は彼らのアプローチを完全に解読していませんが、私は彼らの活動がJRubyスクリプトにイベントを転送するという印象を受けています。あなたのケースでは、アクティビティはイベントをDEXファイルからロードされた他のクラスに転送します。

+0

うん、それは私が思ったよ。ありがとうございました – Joel

+0

Rubotoは、フレームワークの 'DexPathList'にdexパスをロードするためにリフレクションによって行います:https://github.com/ruboto/ruboto/blob/e961c186add5c89d82f922966d24a2f685d42560/assets/src/org/ruboto/ FrameworkHack.java Dalvik Path Class Loaderが同じことをしていることを考慮すると、とても良い解決策ではありませんが、大丈夫です。 – redDragonzz

関連する問題