2017-01-26 9 views
0

実行中のアプリケーションを使用し、.apkファイルを使用してまだインストールされていないアプリケーションのコードにアクセスしようとしています。私は、電話機にインストールすることなく、セカンダリアプリケーションpackagename、プロバイダ、バンドル、データなどのすべてにアクセスする必要があります。.apkファイルからアプリケーションコードを抽出する

これまでのところ私が理解しているところからは、2つのうちのどちらかを使用できます。

1)dexClassLoader。このオプションを使用すると、SDカードなどの種類のストレージから.apkファイルにアクセスできる必要があります。

2)pathClassLoader。ここで正しいオプションのようです。このオプションでJAR/ZIP/APKファイルを使用できます。

基本的に、実行中のプロセスにそのコードをバインドすることで、2番目のアプリケーションを最初のアプリケーションに読み込もうとしていますが、逆コンパイルせずにコードにアクセスするのは問題です。私は私の質問は、私は/ここで最初または2番目のオプションを試して使用する必要がありますか、または3番目のオプションが利用可能ですか?

答えて

0

dexClassLoaderなどを使用して2番目のアプリケーションから動的にコードをロードすることはできますが、新しいコンポーネントをアプリケーションに動的に追加することはできません。どのコンポーネントもAndroidManifest.xmlで静的に宣言する必要があります。

したがって、2番目のapkのアクティビティをメインアプリケーションに「インポート」することはできません。そのアクティビティのクラスにアクセスすることはできますが、それを使用してアクティビティを直接開始することはできません。

要件に応じて、メインアプリケーションで「プレースホルダ」アクティビティを作成し、セカンダリapkからアクティビティクラスのインスタンスを作成し、そのインスタンスにすべてのメソッド呼び出しを転送することができます。一般的に、私は実際にこれを示唆しません。私はそれが実際に正しく行うことは(場合によっては不可能ではないにしても)非常に難しいと思う。

+0

ありがとうございます。私はいくつかの人が、まだインストールされていないアプリケーションコードを実行中のプロセスにバインドしていると読んでいます。 私の目標は、アクティビティ自体を開始することではありません(しかし、それは参考になるかもしれません)。可能であれば、ほぼ不可能に近いことに気がついていますが、ネイティブメソッドを使用してみたいと思っています。bindApplication()などの呼び出しを行うために必要な特定の情報へのアクセスに問題があります。 2番目の.apkファイルをインストールします。 – Pulkit

+0

あなたはこれを見ていただけますか? http://stackoverflow.com/questions/42100863/android-instrumentation-execstartactivity-parameters – Pulkit

+0

@Pulkit - 良い質問、upvoted。私は助けることはできません、申し訳ありません:) – JesusFreke

関連する問題