ユーザ用ツール

サイト用ツール


サイドバー

プログレス合同会社

広告

android:studio:application:app:resources-module

04.共通リソースモジュールの作成

複数のモジュールで使用する文字列リソースを管理する共通リソースモジュールを作成します。

共通リソースモジュールは、文字列リソースだけを持たせるため、Android Studioモジュール作成ウィザードを使わずにモジュールを作成します。

/coreディレクトリ直下に、resourcesディレクトリを追加し、最小構成のAndroidビルドファイルbuild.gradle.ktsを作成します。

plugins {
  alias(libs.plugins.android.library)
}

android {
  namespace = "jp.co.progress_llc.portal.core.resources"
  compileSdk = libs.versions.compile.sdk.get().toInt()
  defaultConfig.minSdk = libs.versions.min.sdk.get().toInt()
}

dependencies {
}

2行目
Androidライブラリプラグインを使用します。
6行目~8行目
最小限のAndroidライブラリの定義を行います。

ビルド対象に追記

モジュール作成ウィザードを使わずにモジュールを作成したため、ビルド対象モジュールに手動で追記します。

   :
include(":core:resources")

2行目
ビルド対象に追記します。

追記後、『同期アイコン』で内容をプロジェクトに反映させます。

共通リソースの作成

:core:resourcesモジュールにsrc/main/res/valuesディレクトリを作成します。

作成したディレクトリ内に文字列リソースファイルstrings.xmlを作成します。

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string name="company_name">プログレス合同会社</string>
  <string name="app_name">ポータル</string>
</resources>

3行目~4行目
会社名とアプリケーション名を定義しています。

アプリケーションの表示名を変更

:appモジュールのbuild.gradle.ktsで、共通リソースの会社名とアプリケーション名からmanifestPlaceholdersを設定します。

import org.w3c.dom.Element
import javax.xml.parsers.DocumentBuilderFactory
   :
android {
   :
  defaultConfig {
   :
    manifestPlaceholders["appLabel"] = "AppNamePlaceholder"
  }
}

afterEvaluate {
  val coreStringsFile = file("../core/resources/src/main/res/values/strings.xml")
  if (coreStringsFile.exists()) {
    val doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(coreStringsFile)
    doc.documentElement.normalize()
    val stringNodes = doc.getElementsByTagName("string")
    var companyName = ""
    var appName = ""
    for (i in 0 until stringNodes.length) {
      val node = stringNodes.item(i) as Element
      when (node.getAttribute("name")) {
        "company_name" -> companyName = node.textContent
        "app_name" -> appName = node.textContent
      }
    }
    android.defaultConfig.manifestPlaceholders["appLabel"] = "$companyName$appName"
  }
}
   :

1行目~2行目
必要なimportを追記します。
8行目
AndroidManifest.xmlに埋め込む変数を定義します。
12行目
build.gradle.ktsの設定をすべて処理した後に実行するフックを定義します。
12行目~29行目
:core:resourcesのリソースxmlファイルの内容でmanifestPlaceholders[“appLabel”]を置き換えます。
javaxmlパーサーを使ってリソースxmlファイルを解析します。

追記後、『Sync Now』で内容をプロジェクトに反映させます。

アプリケーションの表示名がmanifestPlaceholdersの変数の内容になるように置き換えます。

   :
  <application
   :
    android:label="@string/app_name"
    android:label="${appLabel}"
   :

4行目~5行目
android:labelの設定を書き換えます。

:appのリソースファイルからapp_nameの定義を削除します。

<resources>
  <string name="app_name">Portal</string>
   :

2行目
app_nameの定義を削除します。

android/studio/application/app/resources-module.txt · 最終更新: by プログレス合同会社