2013-06-12 11 views
15

私はちょうど興味があります:Androidにインストール済みの外部アプリをダウンロードするにはどうすればいいですか?

通常、開発者向けのアプリケーションの中には、他のサンプルアプリケーションをダウンロードしてインストールすることなくサンプルアプリケーションを実行できるものがあります。

このようなアプリの例は、クールな「DevAppsDirect」アプリです(BTWを強くお勧めします)。

私の質問は:

このアプリケーションはどのように機能しますか?

つまり、彼らはAPKをダウンロードしますか?どのように彼らはインストール段階をスキップし、何とかダウンロードしたアプリを実行しますか?彼らは何とかダウンロードしたコンテンツとマージしますか?それはプラグインのようなものですか?

このようなことは、プラグインと拡張機能を必要とするアプリケーションや、私が考えることのできない他のアイデアに役立つ可能性があります。

他のアプリがプラグインの仕組みをどのように使っているのだろうか。多くのアプリは、プレイストアを介して他のプラグイン - アプリをダウンロードすることができます。彼らは何とか他のapkファイルでいくつかのコードを実行しますか?彼らは他のapkファイルに到達することすらできますか?どのアプリが自分のAPKファイルにアクセスできるかをアンドロイドに伝える方法はありますか?

+0

この質問には明確な発見がありましたか?さらなる調査は? –

+0

@VishalVyasは単なる手がかりです。必要に応じて、DevAppDirectに連絡してSDKを依頼することができます。多分彼らは受け入れるだろう。 –

+0

@androiddeveloperこれを行う方法を見つけましたか? –

答えて

8

Androidのクラスローダー(この場合はおそらくPathClassLoader)を使用して、クラスをインストールせずに実行時に動的にロードすることができます。

https://github.com/Rookery/AndroidDynamicLoaderをご覧ください。

プラグインapk'sは、複雑なものも必要としないかもしれませんが、エクスポートされたアクティビティに送信されたインテントを介して通信し、結果を返信することができます。 PackageManager(http://developer.android.com/reference/android/content/pm/PackageManager.html)を使用して、アクティビティが登録されているインテントを照会することができます。

+1

これは本当に有望ですが、いくつかのサンプルコードを表示できますか?たとえば、内部/外部ストレージにapkファイルをダウンロードしたとします。その内でアプリを起動するには、次に何をする必要がありますか? –

+1

@androiddeveloper:「内部/外部ストレージにapkファイルをダウンロードしたとしますが、その中でアプリを起動するには次に何をすべきですか?」 - それは不可能です。 – CommonsWare

+1

@CommonsWareが正しいです。 PackageManagerはサイドロードされたクラスについては認識しないため、サイドロードされたクラスについては認識しません。 DevAppsDirectによれば、彼らの「技術は、DevAppsDirectアプリ内でシミュレートされたAndroid環境を作成します」。私はこれが何とか手動でライフサイクル機能(onCreateなど)を呼び出すことを意味していると仮定しています。アプリを起動するAndroidに頼る代わりに – Neiti01

2

非常に興味深い!私はこれが実行可能だと思う、あなたはそれを自分で試していない。

  • ご使用のサーバーでAPKを持っている場合は、あなたが今、あなたはメインを決定するためにマニフェストファイルを解析
  • 独自のapplicaitonプライベートメモリに解凍するzipユーティリティを使用することができますあなたのアプリ
  • からそれをダウンロードできますアクティビティ
  • 次に、ClassLoaderまたはDexClassLoaderを使用して、アクティビティを動的に読み込むことができます。

私は、これはあなたがDevAppsDirectのAndroidManifest.xmlをチェックアウトするManifest Viewerを使用してみてくださいDevAppsDirect

+0

最後の2つのステップ(マニフェストの解析とローダーの使用)はどのように行いますか?私はマニフェストが読める形式であるとは思わない...この後も、どのようにローダーを使いますか? –

+0

apkを解凍する多くのユーティリティがあり、マニフェストファイルを完全に見ることができます。例dex2Jar、apktoolなどです。アプリケーション自体にjarを使用できます。 をロードし、dexファイルをロードします。ファイルfile = new File( "/ data/data/com.android.myapp/otherapp/classes.dex"); DexFile appDexFile =新しいDexFile(ファイル)。 – blganesh101

+0

あなたはアンドロイドプラットフォーム自体でこの解決策を試してみましたか?それは機能しましたか?ステップ2以降の –

1

で何が起こっていると考えています。残念ながら、アプリケーションにはマニフェストをエクスポートするオプションがありません。私は彼が実際にリストに表示されているアプリをインストールしているとは思わない。あなたはおそらく一見する必要があります。

+0

彼は、私は彼がアプリをインストールしていないと書いています。何とか彼は必要なものを抽出し、それを起動します。 –

1

DevAppsDirectはAndroidオープンソースプロジェクトの「ランチャー」と呼ばれる部分を使用しているようですが、彼らはOSの一部を取り上げ、自分のアプリケーションの中に組み込んでコンパイルされたAPKをデモとしての図書館。

ランチャーは、電話のホーム画面を管理し、他のアプリを起動し、ウィジェットをホストします。

ここでAndroidオープンソースプロジェクトのコピーを入手できます:http://source.android.com/source/downloading.htmlとcom.android.launcherパッケージをご覧ください。私はdevAppsDirect(ウェブサイトhere)の開発者と話をし、ここで彼が書いたものだき

+0

クールですが、それを行ったライブラリはありますか?これは最初の一歩です。このような巨大なコードを理解し、必要なものだけを取ることは非常に難しいです。 –

+0

まあまあ... DevAppsDirect Appの価値はまさにそのものです...私は彼らがそれをした既存のライブラリを使用したとは思わないでしょう、おそらく彼らはそれ自身を調整しました、あなたはランチャーのコードをブラウズして自分自身でそれを理解しなければならないかもしれません試行錯誤によって... Cyanogenmodを見ることもできますし、Launcherもハッキングしており、コードはすべてgithub(https://github.com/CyanogenMod)にあります。 –

6

技術DevAppsDirectの後ろには、(www.inAppSquared.com)inAppSquared と呼ばれています。一言で言えば、inAppSquaredは プラグインにAndroidアプリを回すことができます。これは公開されているAndroid API のみを使用して行われ、狂ったハッキン​​グは含まれません。

これは、Xamarin とTitaniumがモバイルプラットフォームと同じ方法で新しいモバイルプラットフォームを作成することで実現しました。違いはinAppSquaredは とAndroid APIと同じAPIを持ち、一度アプリケーションは inAppSquaredに移植されると、インストールされずに実行できます。

この技術には多くの可能性があります。 プラグインと拡張機能について述べましたが、App Discovery、 広告、サブスクリプションサービス、A/Bテスト、バグ修正、多くの場合 などにも使用できます。

関連する問題