0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Androidでマルチモジュール化した簡単な実例

Posted at

こんにちは

現在Hiltの導入のサンプルを作っているのですが、ついでにマルチモジュール化をやってみました。

ディレクトリ構成としては、アプリ名がhilt_sampleとすると

 └── hilt_sample
     ├── data
     │   └── repositories
     │       └── MainRepositoryImpl.kt
     ├── domain
     │   ├── repositories
     │   │   └── MainRepository.kt
     │   └── usecases
     │       └── FetchSomeNumberUseCase.kt
     └── presentation
         ├── MainActivity.kt
         └── MainViewModel.kt

↑このようになっています。
Domain層にRepositoryのinterfaceを置いて、Usecaseから外側の層(Data層)に依存しないようにしている、よく見かける構成です。(Data層でそれを実装して、依存性を逆転させています)

Data層とPresentation層は、Domain層に依存しています。

まずはDomain層をモジュールとして切り出してみようと思います。

方針

  1. 空のモジュールを作る
  2. 1.で作ったモジュールにDomain層の中身を移行する
  3. モジュール化したDomain層をimportする
# 1. 空のモジュールを作る ![スクリーンショット 2022-02-07 0.07.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367893/1c95aca4-6cf6-ff56-b0f9-134d2c1d556a.png)

スクリーンショット 2022-02-07 0.23.40.png

こんな感じで、空っぽのライブラリができます。

2. 1.で作ったモジュールにDomain層の中身を移行する

あとは、domainの中身をこっちにうつします。
原始的にAndroid Studio上でドラッグで引っ張ってディレクトリ移動するだけで特に不具合はなかったです。

3. モジュール化したDomain層をimportする

アプリケーションのbuild.gradleに、1.で作成したdomainというライブラリを追加します。

build.gradle
dependencies {
    implementation project(":domain")
}

これでビルドをしたら、モジュールを分割できました。
ビルドが通らなかったらcleanとかしてみてください。

実用上どういう分割の仕方が妥当であるかはまだわからないので(DIが難しくなるとか聞いたことがあります)
詳しい方がいたら教えてください。

ではまた:joy:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?