📚

Android Studioでライブラリモジュールの作り方

2024/01/06に公開

最近よくモジュールを作るのでメモしておく。

新しくライブラリモジュールを作る

Android StudioのProjectツリーでproject rootを選択し、⌘+Nを押します。(その状態でmをタイプすると検索できます)

Moduleを選択すると、Create New Moduleダイアログが表示されます。

Templates[1]Android Libraryを選択し、右側で必要事項を入力します。

  • Module name: 作りたい適切なモジュール名
  • Package name: パッケージ名(自分は applicationId + module name とすることが多いです)
  • その他はデフォルトで良いかと思います。

入力を終えてたら、Finishをクリックします。すると新しく作ったモジュールが作られます。

あとこのとき変更されるものとしては、settings.gradle.ktsが次のように変更されます。

diff --git a/settings.gradle.kts b/settings.gradle.kts
index 0b6e301..a0b7ddd 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -21,3 +21,4 @@ 
 include(":app")
+include(":sample")

この状態で Sync Gradleすると新しく作ったモジュールが使える状態になりました。

作ったモジュールを使う

たとえばappモジュールから先程作ったsampleモジュールを参照できるようにするには、appモジュールのbuild.gradle(.kts)を開き、dependenciesで
implementation(project(":sample"))を追加します。

--- a/app/build.gradle
+++ b/app/build.gradle
@@ -22,6 +22,7 @@ android {
 dependencies {
+    implementation(project(":sample"))

これはstringで指定する方法ですが、Gralde7.0以降であれば、タイプセーフにかくことができます。
そのためにはまず、settings.gradle(.kts)に

enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")

を追加します[2]
appモジュールのbuild.gradle(.kts)に戻り、projects.<module name>と書き直すことができます。

 dependencies {
+    // implementation(project(":sample"))
+    implementation(projects.sample)

これでappモジュールからsampleモジュールを参照できるようになったので、確認のためsampleモジュールに適当なクラスを作成し、

appモジュールで使えることが確認できました。(以下の図はappモジュールにあるMainActivity内)

モジュールの削除方法

モジュールを削除するのも意外と困るのでメモしておきます。

単純に削除したいモジュールを右クリックしてDeleteを探すだけだと無いですし、⌘+Deleteで消すことができません。

Deleteできるようにするには、settings.gradle(.kts)に書かれてる include(":sample") のような消したいモジュールのincludeを削除して、Sync Gradleします。完了したらもう一度消したいモジュールを右クリックしてみると、Deleteが存在するので、クリックすると削除できます。(⌘+Deleteでも削除可能になります)

脚注
  1. Templatesで私がよく使うテンプレートを紹介

    • Android Library
      • appモジュール(applicationモジュール)から使いたいモジュールを作りたいとき利用
    • Phone & Tablet
      • 同じプロジェクト内に別のアプリを作りたい場合に利用
      • たとえば、nowinandroidだと通常アプリとは別にカタログアプリで使われています。
    • Benchmark
    ↩︎
  2. https://docs.gradle.org/7.0/release-notes.html#new-features-and-usability-improvements ↩︎

GitHubで編集を提案

Discussion