1 はじめに
App
この作業では、さまざまな理由により、2 つの独立して実行可能なプロジェクトを 1 つのウェアハウスにマージする必要がありgit
、別のApp
プロジェクトには他のモジュールが存在しますModule
。
2 つのプロジェクトを同じフォルダーにコピーしただけの場合でも、各プロジェクトを個別に開く必要があり、非常に不便です。
そして、私が達成したい効果は、Android Studio
2 つのプロジェクトの同じルート フォルダーを開くことで、2 つのプロジェクトをロードし、Android Studio
プロジェクトを内部で切り替えてコンパイルして実行できるようにすることです。
下の画像に示すように、現在 2 つのプロジェクトがあります。
MyProject1
MyModule1
:これには依存性がありますLibrary
MyProject2
: 独立したアプリであり、他のアプリに依存しません。Library
次に、これら 2 つのプロジェクトを例として、変更を加えてgradle
1 つのプロジェクトに結合します。
2. 関数の使用法を含める
まず、 ではGralde
、include
関数を使用してサブプロジェクトに依存できることは誰もが知っています。
たとえば、新しいプロジェクトでは、モジュール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 つのプロジェクトにマージします。