ウェブサイトをスクレイピングして、データを取得します。
ウェブデータを取得するライブラリモジュールを作成します。
Fragmentモジュールの作成と同様に、アプリケーショントップのdataディレクトリ(新規に作成します)内に、下記の内容でwebモジュールを作成します。
/build-logic/src/main/kotlin内にライブラリモジュールのbuild.gradle.ktsで使用するビルドプラグインを作成します。
ファイル名をLibraryConfigurePlugin.ktにしています。
import com.android.build.api.dsl.LibraryExtension import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies class LibraryConfigurePlugin: Plugin<Project> { override fun apply(project: Project) { with(project) { with(pluginManager) { apply("com.android.library") apply("org.jetbrains.kotlin.android") apply("com.google.devtools.ksp") apply("com.google.dagger.hilt.android") } extensions.configure<LibraryExtension> { configureCommonExtension(this) defaultConfig { consumerProguardFiles("consumer-rules.pro") } buildTypes { release { isMinifyEnabled = false proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } } } dependencies { add("implementation", catalog.findLibrary("androidx.core.ktx").get()) add("implementation", catalog.findLibrary("androidx.appcompat").get()) add("implementation", catalog.findLibrary("material").get()) add("implementation", catalog.findLibrary("hilt.android").get()) add("testImplementation", catalog.findLibrary("junit").get()) add("androidTestImplementation", catalog.findLibrary("androidx.junit").get()) add("androidTestImplementation", catalog.findLibrary("androidx.espresso.core").get()) add("ksp", catalog.findLibrary("hilt.compiler").get()) } } } }
作成したビルドプラグインをライブラリモジュールのbuild.gradle.ktsで使用できるようにbuild-logic直下のbuild.gradle.ktsに追記します。
: gradlePlugin { : plugins { register("LibraryConfigurePlugin") { id = "build.logic.library.configure" implementationClass = "LibraryConfigurePlugin" } } }
変更後、『同期アイコン』で内容をプロジェクトに反映させます。
data/webモジュールのbuild.gradle.ktsをComposite Buildへ対応させます。
plugins { alias(libs.plugins.com.android.library) alias(libs.plugins.kotlin.android) id("build.logic.library.configure") } android { namespace = "jp.co.example.android01.data.model" compileSdk = 34 defaultConfig { minSdk = 27 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") } buildTypes { release { isMinifyEnabled = false proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } } dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) implementation(libs.material) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) }
変更後、『同期アイコン』で内容をプロジェクトに反映させます。
ウェブサイトをスクレイピングするにあたって、HTTP(S)通信を行うためのクライアント通信ライブラリRetrofitを導入します。
バージョンカタログファイルにRetrofitの情報を追記します。
[versions] : retrofit = "2.11.0" [libraries] : retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" } [plugins] :
追記後、『Sync Now』で内容をプロジェクトに反映させます。
/data/webのbuild.gradle.ktsにRetrofitライブラリへの参照を追記します。
: dependencies { implementation(libs.retrofit) }
追記後、『Sync Now』で内容をプロジェクトに反映させます。
ウェブデータを取得するための操作ボタンをHome Flagmentに配置します。
ボタンの表題をリソースファイルで定義します。
Values XML FileHome Flagmentのsrc/mainディレクトリで『新規(N)』➡『XML』➡『Values XML File』でリソースファイルを新規に作成します。
ファイル名は標準に倣って『strings.xml』にします。
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="btn_getdata_caption">データ取得</string> </resources>