11

モジュール(Androidライブラリ)で拡張できるAndroidアプリケーションを書きたいです。モジュールは実行時にロードされます。したがって、それらは URL からダウンロードされ、ディレクトリに保存されます。モジュールは aar ファイルです。

実行時にaarファイルを動的にロードする方法はありますか?

含まれている classes.jar を URLClassLoader でロードするだけでよいことはわかっています。しかし、レイアウト、文字列、... リソースを読み込めません。HM

これを解決する方法を知っている人はいますか?

編集:

関連するトピックをいくつか見つけました。

最初のリンクからの回答のため、うまくいかないようです。私はその考えが間違っていることを願っています。

4

2 に答える 2

1

aar をリソースと dex に分離するのに役立つ gradle プラグインがあります。これを確認してください依存関係を注入してプロジェクトを構築している場合、このプラグインは aar を抽出し、リソースをプロジェクト リソースとマージします。その後、マニフェストをマージし、その後すべての jar (各 aar 内および jar 依存関係のみ) を収集し、dex ファイルを作成します。任意のサーバーにアップロードし、実行時にその dex をダウンロードしてロードします。

于 2018-05-30T18:10:12.480 に答える
0

私は一種の同様の問題を抱えています。ユーザーにアプリの再インストールを強制することなく、実行時にプラグインを追加したい。

「 The Busy Coder's Guide to Android Development 」という本で、「Plugin Patterns」という非常に優れた章を見つけました。私はまだそれを読んでいるので、あなたのニーズを正確にカバーしているかどうかはわかりませんが、あなたのケースに役立つ情報がたくさん含まれています.

本のウェブページにある章のサンプルを次に示します。これにより、その内容の概要がわかります

この章では、「プラグイン モデル」とは、主にその仕事専用の他のアプリ (「プラグイン」) によって拡張されているアプリ (プラグイン「ホスト」) を指します。

確かに、あるアプリが別のアプリのプラグインにならなくても、アプリを連携させる方法はたくさんあります。たとえば、startActivity() を呼び出して Web ページを表示する場合、ユーザーの Web ブラウザーはアプリのプラグインではありません。

対照的に、Locale アプリはプラグインを介して拡張できます。プラグインは、Locale の作成者である two forty four am (Locale の作成者) またはサード パーティによって作成されます。これらのプラグインは、Locale 自体ができることをどのように改善するか以外に、ユーザーにとって真の価値はありません。したがって、この種の構造はプラグイン モデルとしての資格があります。

特に、この章では、プラグイン モデルが必要な場合の 2 つの一般的なシナリオに焦点を当てますが、他にも確かに存在します。

サード パーティがアプリの機能を拡張できるようにしたい (Locale で 2 44 アムが必要な場合) または 一部のアクセス許可をプラグインに委任してコア アプリのアクセス許可の数を減らし、ユーザーが「オプトインできるようにする」 」 それらの権限

それが少し役立つことを願っています。

于 2017-02-10T19:28:07.337 に答える