Module Libraryの構築と参照(Giraffe編)

投稿日:  更新日:

Module Libraryの構築と参照方法について、まとめます。

この記事は「Module Libraryの構築と参照(2022.04発行)」をAndroid Studio Giraffe(2023.07)向けに書き直したものです。

GiraffeよりGradleでKotlin DSLが推奨になりました。それに従い、ビルドスクリプトをKotlinで記述したコードに置き換えています。

※環境:Android Studio Giraffe | 2022.3.1
   :Android Gradle Plugin 8.1.0
   :Gradle 8.0

スポンサーリンク

Module Libraryとは

Android StudioはビルドツールにGradleを採用しています。

Gradleの開発環境は一つのプロジェクトから構成され、必要であれば子プロジェクトを作ることが出来ます。前者をRoot Project、後者をSub Projectと言います。

フォルダの構成は下記のようになります。

〔Gradleのフォルダ構成〕

Root Project -+- Sub Project1
              |
              +- Sub Project2
              |
              +- Sub Project3
              :
              :
〔Android Studioのフォルダ構成〕

Project -+- App
         |
         +- Module1
         |
         +- Module2
         :
         :

このようなフォルダ構成をMulti Projectといい、Android Studioは正にGradleのMulti Project構成です。

Module LibraryはGradleのSub Projectをライブラリ化したものです。

ライブラリの提供範囲はプロジェクトになります。

Android Studioで参照するライブラリ

スポンサーリンク

ライブラリの構築

まず、Moduleを作成します。

ModuleLibraryの作成

ModuleをLibraryにするためには、Android Libraryテンプレートを指定してください。

Android Libraryテンプレートの指定

作成されたモジュールは次のようになりました。

Moduleの構成

build.gradle.ktsへライブラリ構築用のプラグインが指定されます。
※拡張子「.kts」はKotlinで記述されたビルドスクリプトを示す
※アプリ構築用のプラグインは「com.android.application」

plugins {
    id("com.android.library")
    id("org.jetbrains.kotlin.android")
}

android {
    ...
}

dependencies {

    implementation("androidx.core:core-ktx:1.9.0")
    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("com.google.android.material:material:1.9.0")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}

後は、ライブラリに追加するクラスを記述して行けば良いです。

ライブラリを個別にビルドする必要はありません。

ライブラリに追加するクラスのサンプル(Brackets.kt)

package com.example.lib.decoration

/*
** メッセージ(テキスト)の両端をカッコで囲む装飾を施します。
*/

private const val START_CHAR = "("
private const val END_CHAR = ")"

class Brackets(var start: String = START_CHAR, var end: String = END_CHAR) {
    fun bracket(mesg: String): String {
        return "${start} ${mesg} ${end}"
    }
}

fun round(mesg: String): String {
    return Brackets().bracket(mesg)
}
fun angle(mesg: String): String {
    return Brackets("<", ">").bracket(mesg)
}
fun square(mesg: String): String {
    return Brackets("[", "]").bracket(mesg)
}
スポンサーリンク

ライブラリの参照

build.gradle.ktsのdependenciesへModule Libraryの依存関係を追加します。

plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
}

android {
    ...
}

dependencies {

    implementation("androidx.core:core-ktx:1.9.0")
    implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1")
    implementation("androidx.activity:activity-compose:1.7.2")
    implementation(platform("androidx.compose:compose-bom:2023.03.00"))
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.ui:ui-graphics")
    implementation("androidx.compose.ui:ui-tooling-preview")
    implementation("androidx.compose.material3:material3")
    implementation(project(mapOf("path" to ":decoration")))
    testImplementation("junit:junit:4.13.2")
    ...
}

同様なことを「Project Structure」から行うことも可能です。

ライブラリの参照

スポンサーリンク

サンプルの実行結果

サンプルの実行結果を示します。

import com.example.lib.decoration.Brackets
import com.example.lib.decoration.angle
import com.example.lib.decoration.round
import com.example.lib.decoration.square

...
{
    val _str1 = Brackets("#", "#").bracket("Hello World !!")
    println(_str1)
    val _str2 = round("Hello World !!")
    println(_str2)
    val _str3 = angle("Hello World !!")
    println(_str3)
    val _str4 = square("Hello World !!")
    println(_str4)
}
10:48:40.896  8548-8548  System.out I  # Hello World !! #
10:48:40.897  8548-8548  System.out I  ( Hello World !! )
10:48:40.897  8548-8548  System.out I  < Hello World !! >
10:48:40.897  8548-8548  System.out I  [ Hello World !! ]

Module Libraryの場合は、ライブラリを個別にビルドする必要がありません。

build.gradle.ktsのdependenciesへ依存関係が正しく記述されていれば、アプリのビルドと連携して、ライブラリのビルドも行われます。

スポンサーリンク

関連記事:

アプリ開発の中で作成したクラスや関数などを資産としてライブラリ化し、次のアプリ開発で再利用するといったスタイルは、開発効率を上げる常套手段です。 私のように個人でアプリを開発している場合、この恩恵は薄いのですが、ソフトハウス(死語?)で年間に多くのアプリを開発している現場では濃いと思います。 「誰かが欲しいと思う機能」は「誰もが欲しいと思う機能」です。同じような仕様のアプリ開発を受注することはありませんか?機能の骨幹はライブラリからの流用に任せて、外観は顧客の要望に合わせるだけで済んだら、楽です。 今回は、Android Studio(アプリ開発)で参照するライブラリの種類について、まとめます。 ...
Module Libraryの構築と参照方法について、まとめます。 ※環境:Android Studio Bumblebee | 2021.1.1 ...
Local Repositoryの構築と参照方法について、まとめます。 ※環境:Android Studio Bumblebee | 2021.1.1 ...
Central Repositoryの参照方法について、まとめます。 ...
Remote Repositoryの構築と参照方法について、まとめます。 ※環境:Android Studio Bumblebee | 2021.1.1 ...
リポジトリサーバをApache+WebDavで構築する方法です。 Remote Repositoryの詳細は「Remote Repositoryの構築と参照」を参照してください。 ...
リポジトリサーバをGoogle Cloud Storageで構築する方法です。 Remote Repositoryの詳細は「Remote Repositoryの構築と参照」を参照してください。 ...
Local Repositoryの構築と参照方法について、まとめます。 この記事は「Local Repositoryの構築と参照(2022.04発行)」をAndroid Studio Giraffe(2023.07)向けに書き直したものです。 Gradle Ver7.x以降、リポジトリの構築方法が若干変更になりました。 また、GiraffeよりGradleでKotlin DSLが推奨になりました。それに従い、ビルドスクリプトをKotlinで記述したコードに置き換えています。 ※環境:Android Studio Giraffe | 2022.3.1    :Android Gradle Plugin 8.1.0    :Gradle 8.0 ...
Remote Repositoryの構築と参照方法について、まとめます。 この記事は「Remote Repositoryの構築と参照(2022.04発行)」をAndroid Studio Giraffe(2023.07)向けに書き直したものです。 Gradle Ver7.x以降、リポジトリの構築方法が若干変更になりました。 また、GiraffeよりGradleでKotlin DSLが推奨になりました。それに従い、ビルドスクリプトをKotlinで記述したコードに置き換えています。 ※環境:Android Studio Giraffe | 2022.3.1    :Android Gradle Plugin 8.1.0    :Gradle 8.0 ...
スポンサーリンク