31

簡単な要約は次のとおりです。APK と個別のライブラリ (JAR、AAR、DEX ファイルなどの何らかの形式でクラス (および理想的にはリソースも) のセットを意味します) をビルドする方法ですが、それらのライブラリをAPK; 代わりに、アプリは実行時にそれらをロードしますか?

詳細

したがって、私の主な質問は、そのようなアプリを構築する方法です (Gradle 構成など)。どのクラスがどの JAR ファイルまたは DEX ファイルに入るかを指定するにはどうすればよいですか? 最終的に作成したい DEX ファイルごとに Android Studio モジュールを作成する必要がありますか?

密接に関連する質問は、Java コードが外部ライブラリをロードし、実行時にそれらのクラスにアクセスする方法です。後者については、classloader による dex ファイルからアプリのクラスへのアクセスで示されたアプローチが機能することを願っています。

https://developer.android.com/studio/projects/android-library.htmlの手順を試しましたが、依存関係ライブラリを含むAPK がビルドされます。

Multidex ( https://developer.android.com/studio/build/multidex.html )も試してみましたが、開発者がどのクラスをどのDEXファイルに入れるかを制御できないようです。さらに、それらすべてを 1 つの APK にパッケージ化します。AFAICT 実行時にこれらの DEX ファイルのロードを制御する方法はありません。

バックグラウンド

ここで「 XY問題」の可能性があるので、背景を説明したほうがいいです。

クライアント向けのアプリを構築しています。アプリ ストアを通じて配布される予定はないため、更新のための通常のメカニズムにはアクセスできません。代わりに、クライアントは、新しい APK を手動でサイドロードする必要なく、アプリ自体の新しいコンポーネントをダウンロードして古いコンポーネントを置き換えることでアプリ自体を更新できるようにしたいと考えています。ここでの主な動機は、更新が技術者以外のユーザーにとって簡単でなければならないということです。アプリが更新プロセスを制御できる場合は、更新プロセスをスムーズにし、ユーザーをガイドできます。

さらに、このアプリはインターネット アクセスが不十分で高価な地域で使用されるため、クライアントは、ユーザーにアプリ全体を再ダウンロードさせて更新を受け取るのではなく、小さなチャンク (2 MB など) でアプリの更新を発行できるようにしたいと考えています。小さなアップデート。

重要な場合に備えて言及する必要がある要件の 1 つの側面は、実行時に読み込まれるライブラリが microSD カードに存在することになっていることです。これは、インターネットにアクセスせずに更新を配布する場合にも役立ちます。

アプリの現在のステータスは、約 50% が作成されているということです。つまり、以前のバージョンがいくつかリリースされていますが、上記の要件やその他の要件を満たすために、アプリを変更 (再構築) する必要があります。

4

2 に答える 2