Android Gradle 操作、2 つのプロジェクトを 1 つのプロジェクトにマージする

1 はじめに

Appこの作業では、さまざまな理由により、2 つの独立して実行可能なプロジェクトを 1 つのウェアハウスにマージする必要がありgit、別のAppプロジェクトには他のモジュールが存在しますModule
2 つのプロジェクトを同じフォルダーにコピーしただけの場合でも、各プロジェクトを個別に開く必要があり、非常に不便です。
そして、私が達成したい効果は、Android Studio2 つのプロジェクトの同じルート フォルダーを開くことで、2 つのプロジェクトをロードし、Android Studioプロジェクトを内部で切り替えてコンパイルして実行できるようにすることです。

下の画像に示すように、現在 2 つのプロジェクトがあります。

  • MyProject1MyModule1:これには依存性がありますLibrary
  • MyProject2: 独立したアプリであり、他のアプリに依存しません。Library

次に、これら 2 つのプロジェクトを例として、変更を加えてgradle1 つのプロジェクトに結合します。

ここに画像の説明を挿入

2. 関数の使用法を含める

まず、 ではGraldeinclude関数を使用してサブプロジェクトに依存できることは誰もが知っています。
たとえば、新しいプロジェクトでは、モジュールsettings.gradleに依存するために使用される に次のような文がありますapp

include ":app"

をクリックすると、それが実際にはメソッドであり、パラメータが変数文字列であることがincludeわかります。これは、次のようないくつかの項目のパスに渡すことができます。include:app

default void include(String... projectPaths) {
    
    
    this.include((Iterable)Arrays.asList(projectPaths));
}

では、プロジェクトをサブディレクトリに置く必要がある場合はどうすればよいでしょうか?
ここは:ディレクトリを分割するために使用されるため、サブディレクトリに依存するプロジェクトは:xxxx:yyyyこの形式になります。

3. 導入手順

3.1 新しいプロジェクトを作成する

include用途includeわかれば、それを利用して合併を実現することができます。
まず、新しいプロジェクト (例: ) を作成し、MyProjectTestそのappフォルダー内のコードを削除しましょう。

ここに画像の説明を挿入

3.2 プロジェクトを MyProjectTest にコピーする

コピーMyProject1してMyProject2コピー先MyProjectTest
ここに画像の説明を挿入

3.3 settings.gradle を変更する

変更はMyProjectTestもともとsettings.gradle
次のような 2 行のコードでした

rootProject.name = "MyProjectTest"
include ':app'

着替える

rootProject.name = "MyProjectTest"
include ':MyProject1:app'
include ':MyProject1:MyModule1'
include ':MyProject2:app'

ボタンをクリックするとSync、エラーが表示されます。これは、
ここに画像の説明を挿入
ではMyProject1次のものに依存しているためです。MyModule1

implementation project(':MyModule1')

したがって、ここのプロンプトは見つからないため、次のように変更する必要があります。:MyProject1:MyModule1

implementation project(':MyProject1:MyModule1')

この時点で、Syncもう一度ボタンをクリックすると、さらに 2 つの実行可能なプロジェクト オプションがあることがわかります。

ここに画像の説明を挿入
プロジェクトを選択し、クリックして実行すると、プロジェクトが電話機に正常にインストールされていることがわかります。

4. さらなる最適化

この時点で、この記事の目的は基本的に完了し、2 つのプロジェクトを 1 つのプロジェクトに統合することが実現します。
ただし、この時点でAndroid Studio個別に開くと、コンパイル エラーが報告されていることがMyProject1わかります。なぜなら、結合するために In を変更するからです。これは明らかに不合理であり、2 つのプロジェクトをマージした後でも、別々のプロジェクトを引き続き で独立して実行できるのが理想的です。だから何をすべきか?MyProject1
implementation project(':MyModule1')implementation project(':MyProject1:MyModule1')MyProjectTest
Android Studio

4.1 プロジェクトへのパスを指定する

実際、 , を使用してproject.projectDir サブプロジェクトのパスを指定できます。

変更されMyProjectTestパスをsettings.gradle指定します。MyModule1

rootProject.name = "MyProjectTest"

include ':MyProject1:app'
include ':MyModule1'
include ':MyProject2:app'

project(':MyModule1').projectDir = new File('/MyProject1/MyModule1')

次に、MyProject1次の依存関係 implementation project(':MyProject1:MyModule1')を変更しますimplementation project(':MyModule1')

Syncボタンをもう一度クリックし、「実行」をクリックすると、引き続き実行できることがわかります。

またこの時、単独でAndroid Studio開けば単独での実行も可能ですMyProject1

4.2 サブプロジェクトの名前を変更する

ここに画像の説明を挿入

をクリックするEdit Configurationsと、サブプロジェクトの名前を変更することもできます

ここに画像の説明を挿入
名前を削除すると.app、最終的な効果は次のようになります

ここに画像の説明を挿入
ここまでで、2 つのプロジェクトを 1 つのプロジェクトに結合するすべての操作が完了しました。

5. 個別に実行できる別のプロジェクトがある場合は?

独立して実行できるサブプロジェクトがある場合MyProject2、それを統合するにはどうすればよいですか?
実際、それは同じで、 にMyProjectTest依存関係をsettings.gradle追加しますinclude

include ':MyProject2:xxxx'

ここにxxxxこのサブプロジェクトの名前が表示されます。Syncクリックすると、このサブプロジェクトの別の実行中のエントリが表示されます。

6. その他

6.1 この記事のソースコード

ソース コードのダウンロード アドレス: Android Studio で、2 つのプロジェクトを 1 つのプロジェクトにマージします。

6.2 参考

[Android Gradleプラグイン] settings.gradle設定ファイル (基本機能の設定 | インクルード機能の使用法 | ディレクトリレベルの設定 | Moduleモジュールのビルドスクリプト名を変更) _setting.gradle build マルチプロジェクト設定ビルドパッケージ名

おすすめ

転載: blog.csdn.net/EthanCo/article/details/132056793