AndroidマルチModuleが開発し、最終的にaarにパッケージ化して提供
文書ディレクトリ前言 問題 ソリューション 前言
現在、Android StudioによるマルチModuleの開発は非常に一般的であり、プロジェクト業務の分離を容易にするだけでなく、基礎コードの多重化をうまく実現することができます.
に質問
私たちはマルチModuleの開発後、apkを直接パッケージ化するならまだしも、gradleコマンドやASグラフィックスインタフェースを通じてパッケージ化apkを直接実現することができます.しかし、もし私たちがただ1つの機能モジュールを提供するために、他の開発者のアクセスを便利にするために、私たちは複数のModuleを使用して、最終的に1つのaarだけを外部に提供することができますか?各Moduleが1つのaarを生成するのではなく、
ソリューション
githubには似たようなプロジェクトがあり、gradleのパッケージタスクの異なるtaskにtaskを挿入し、複数のModuleを最終的に1つのaarにパッケージ化することを実現することが考えられています.プロジェクトアドレスの欠点:Android gradleのバージョンの更新が速く、メンテナンスコストが大きすぎて、作者もメンテナンスコストが大きいのを見ているはずなので、後でメンテナンスしないでしょう.
需要の絶え間ない緊迫の下で、最終的に私たちは別の方法で実現して、構想は以下の通りです:aarをパッケージ化する前に、まず複数のModuleを1つのModuleに統合して、1つのModuleに統合した後にgradleを通じてaarをパッケージ化して、このようにパッケージ化するのは1つのaarです.主に次の2つの問題を解決する必要があります.リソースファイルのマージ 複数のModuleの下にあるManifestファイルのラベルのマージ リソースのマージは、同じModuleにコピーする前に、異なるModuleの下のリソースファイルの名前を変更すればよいので、開発時に異なるModuleに対して異なる接頭辞を使用して区別すると、マージがより便利になります.Manifestの合併は、依存する3つの側が私たちを合併する必要はありません(アクセス者が依存するとASが自動的に3つの側を合併します)、主に私たち自身のModuleの中でManifestの合併で、主に以下のいくつかの考え方があります:現在、すべてのラベルをModuleに統合することもできます.aarをパッケージ化するときに指定したManifestでいいです. Android Developers上のManifestマージルールに従って、マージスクリプト を作成します. Android gradleを使用したManifest合併task ここでは主に第3の考え方を述べ、対応するtaskはは、各Moduleの を生成する.アプリケーションのModuleを新規作成します.すなわち、 Moduleを変更する このManifestと統合されたリソースファイル/Javaソースファイルを介してModuleを構成し、 にパッケージ化する
以上の手順はgradleスクリプトで一時ディレクトリの下で行うことができ、パッケージングが完了した後、削除を行い、最終生成物のみを出力し、自動化を実現する.
現在、Android StudioによるマルチModuleの開発は非常に一般的であり、プロジェクト業務の分離を容易にするだけでなく、基礎コードの多重化をうまく実現することができます.
に質問
私たちはマルチModuleの開発後、apkを直接パッケージ化するならまだしも、gradleコマンドやASグラフィックスインタフェースを通じてパッケージ化apkを直接実現することができます.しかし、もし私たちがただ1つの機能モジュールを提供するために、他の開発者のアクセスを便利にするために、私たちは複数のModuleを使用して、最終的に1つのaarだけを外部に提供することができますか?各Moduleが1つのaarを生成するのではなく、
ソリューション
githubには似たようなプロジェクトがあり、gradleのパッケージタスクの異なるtaskにtaskを挿入し、複数のModuleを最終的に1つのaarにパッケージ化することを実現することが考えられています.プロジェクトアドレスの欠点:Android gradleのバージョンの更新が速く、メンテナンスコストが大きすぎて、作者もメンテナンスコストが大きいのを見ているはずなので、後でメンテナンスしないでしょう.
需要の絶え間ない緊迫の下で、最終的に私たちは別の方法で実現して、構想は以下の通りです:aarをパッケージ化する前に、まず複数のModuleを1つのModuleに統合して、1つのModuleに統合した後にgradleを通じてaarをパッケージ化して、このようにパッケージ化するのは1つのaarです.主に次の2つの問題を解決する必要があります.
processReleaseManifest
であり、手順は以下の通りである.assembleRelease
を実行し、各Moduleに対してaar apply plugin: 'com.android.application'
はapkのModuleを生成します(このModuleだけがprocessReleaseManifest
というtaskを持つためです).processReleaseManifest
を実行すると、buildディレクトリの下のファイルに生成されたManifestファイルが見つかります(ここでは、Android gradleの大バージョンがアップグレードされるたびに、生成されたManifestディレクトリが異なることに注意してください).assembleRelease
によってaar 以上の手順はgradleスクリプトで一時ディレクトリの下で行うことができ、パッケージングが完了した後、削除を行い、最終生成物のみを出力し、自動化を実現する.