Module Libraryの構築と参照方法について、まとめます。
スポンサーリンク
Module Libraryとは
Android StudioはビルドツールにGradleを採用しています。
Gradleの開発環境は一つのプロジェクトから構成され、必要であれば子プロジェクトを作ることが出来ます。前者をRoot Project、後者をSub Projectと言います。
フォルダの構成は下記のようになります。
Root Project -+- Sub Project1 | +- Sub Project2 | +- Sub Project3 : :
Project -+- App | +- Module1 | +- Module2 : :
このようなフォルダ構成をMulti Projectといい、Android Studioは正にGradleのMulti Project構成です。
Module LibraryはGradleのSub Projectをライブラリ化したものです。
ライブラリの提供範囲はプロジェクトになります。
スポンサーリンク
ライブラリの構築
まず、Moduleを作成します。
ModuleをLibraryにするためには、Android Libraryテンプレートを指定してください。
作成されたモジュールは次のようになりました。
build.gradleへライブラリ構築用のプラグインが指定されます。
※アプリ構築用のプラグインは「com.android.application」
plugins { id 'com.android.library' id 'org.jetbrains.kotlin.android' } android { ... } dependencies { implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' }
後は、ライブラリに追加するクラスを記述して行けば良いです。
ライブラリを個別にビルドする必要はありません。
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のdependenciesへModule Libraryの依存関係を追加します。
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' } android { ... } dependencies { implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation project(path: ':decoration') testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' }
スポンサーリンク
サンプルの実行結果
サンプルの実行結果を示します。
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) }
I/System.out: # Hello World !! # I/System.out: ( Hello World !! ) I/System.out: < Hello World !! > I/System.out: [ Hello World !! ]
Module Libraryの場合は、ライブラリを個別にビルドする必要がありません。
build.gradleのdependenciesへ依存関係が正しく記述されていれば、アプリのビルドと連携して、ライブラリのビルドも行われます。
スポンサーリンク
関連記事:
アプリ開発の中で作成したクラスや関数などを資産としてライブラリ化し、次のアプリ開発で再利用するといったスタイルは、開発効率を上げる常套手段です。 私のように個人でアプリを開発している場合、この恩恵は薄いのですが、ソフトハウス(死語?)で年間に多くのアプリを開発している現場では濃いと思います。 「誰かが欲しいと思う機能」は「誰もが欲しいと思う機能」です。同じような仕様のアプリ開発を受注することはありませんか?機能の骨幹はライブラリからの流用に任せて、外観は顧客の要望に合わせるだけで済んだら、楽です。 今回は、Android Studio(アプリ開発)で参照するライブラリの種類について、まとめます。 ...
続きを読む
続きを読む
Local Repositoryの構築と参照方法について、まとめます。 ...
続きを読む
続きを読む
Central Repositoryの参照方法について、まとめます。 ...
続きを読む
続きを読む
Remote Repositoryの構築と参照方法について、まとめます。 ...
続きを読む
続きを読む
リポジトリサーバをApache+WebDavで構築する方法です。 Remote Repositoryの詳細は「Remote Repositoryの構築と参照」を参照してください。 ...
続きを読む
続きを読む
リポジトリサーバをGoogle Cloud Storageで構築する方法です。 Remote Repositoryの詳細は「Remote Repositoryの構築と参照」を参照してください。 ...
続きを読む
続きを読む
スポンサーリンク