Jetpack Compose 「Modifierは子1つ目だけに適用する」の考え方

実際のコード例で考えてみる。


Column {
  Text(
    text = "Hello",
    modifier = Modifier.padding(16.dp)
  )
  Text(
    text = "World",
    modifier = Modifier.padding(16.dp)
  )
}


val modifier = Modifier.padding(16.dp)

Column {
  Text(text = "Hello", modifier = modifier)
  Text(text = "World", modifier = modifier)
}


Column(
  modifier = Modifier.padding(16.dp)
) {
  Text(text = "Hello")
  Text(text = "World")
}


@Composable
fun ParentLayout() {
  Column(
    modifier = Modifier.verticalScroll(rememberScrollState())
  ) {
    for (i in 1..10) {
      ListItem(
        text = "Item $i",
        modifier = Modifier.padding(8.dp)
      )
    }
  }
}

@Composable
fun ListItem(modifier: Modifier, text: String) {
  Text(
    text = text,
    modifier = modifier.background(Color.LightGray)
  )
}

共有することの意味は「統一性」だろうけども、

見通しが悪くなるので「1つ目まで」としているのだろう。

「まずは個別につけてから共通部分をホイストしていく。」

「親から渡すときは子まで影響。孫は個別に。」

そんな考え方の順番が簡単で自然だと思います。


【Android】AGP を 8.3+ にすると AD_SERVICES_CONFIG プロパティが衝突する

バージョンアップ作業。

はい、またエラー出ました。


Error:
	Attribute property#android.adservices.AD_SERVICES_CONFIG@resource value=(@xml/ga_ad_services_config) from [com.google.android.gms:play-services-measurement-api:21.5.1] AndroidManifest.xml:32:13-58
	is also present at [com.google.android.gms:play-services-ads-lite:22.6.0] AndroidManifest.xml:92:13-59 value=(@xml/gma_ad_services_config).
	Suggestion: add 'tools:replace="android:resource"' to <property> element at AndroidManifest.xml to override.

Google Issue Tracker で以下。

From the Android Studio team:
This is a known issue of the AdMob and Google Services libraries
(AGP before 8.3 would have not surfaced the conflicts between the property definitions, which is why you see this during upgrade of AGP)

The solution suggested from the error message is the right one
Until the libraries are fixed: just override the property yourself in your AndroidManifest.xml

Android Studio チームからのコメント:
これは AdMob および Google Services ライブラリに関する既知の問題です。
(AGP 8.3 より前のバージョンでは、プロパティの定義間の競合が表面化しなかったため、AGP をアップグレードした際にこの問題が発生します)

エラーメッセージで提案されている解決策が正しい方法です。
ライブラリが修正されるまでの間は、AndroidManifest.xml 内でプロパティを自分で上書きしてください。


<property
    android:name="android.adservices.AD_SERVICES_CONFIG"
    android:resource="@xml/gma_ad_services_config"
    tools:replace="android:resource" />

DESCRIBE THE ISSUE IN DETAIL: I am not sure where can I report this issue as it seems it is more related to AdMob and Google Services manifest conflict. However this issue appears after updating to Iguana and AGP from 8.2.2 to 8.3 and Gradle 8.2 to 8.4.

この問題の報告先が分からず困っています。問題の原因は、AdMob と Google Services の AndroidManifest.xml における競合に関連しているように見えます。しかし、この問題は Iguana にアップデートし、Android Gradle Plugin (AGP) を 8.2.2 から 8.3 に、また Gradle を 8.2 から 8.4 に更新した後に発生するようになりました。

Status は Assigned のままで、まだ最近でも出ている模様。

sa...@meteoblue.com #50Nov 20, 2024 05:40PM
I upgraded from com.google.android.gms:play-services-ads:22.3.0' to com.google.android.gms:play-services-ads:23.5.0 and this error came.

<application> タグ内に書けばいいのか。

👉 Merge conflict with AndroidManifest in Android Studio Iguana [327696048] - Issue Tracker


Apple Developer 登録していれば DUNSナンバー を無料で取れる件

まず、DUNSナンバーを取ろうとすれば東京商工リサーチ。

👉 D-U-N-S® Number | 商品・サービス | 東京商工リサーチ

税抜き3000円で一週間です。


自社D-U-N-S® Numberの申請	3,000円(税抜)	7営業日後

Apple Developer 登録をしている人は、無料で取れます。

まずは、登録したい組織名が、

登録済みか確認してから進みましょう。

👉 D-U-N-S番号の検索 - 登録 - Apple Developer

英語が苦手な方でも、翻訳ツールを使えばいけると思います。

当然、日本での法人や組織の証明書類は必要となります。

DUNS 本家から進んでも、リンク先は同じ Apple から。

👉 Claim Your Free D-U-N-S Number – Dun & Bradstreet

「Google Developer」 から進むと、国選択の後、結局前述の東京商工リサーチの申請画面へ進む。

👉 【Android】Google Play Store Developer アカウントを「個人」から「組織」に変更した手順をきちんとまとめておく|ちゃんずまお

(更新中...)