Hilt で KSP の依存関係の設定 (build.gradle.kts)

kapt から KSP に移行しようとしてハマる。

 

🚀 Dagger + KSP

今回は使わなったが動く。


plugins {
  id("org.jetbrains.kotlin.android") version "1.9.0"
  id("com.google.devtools.ksp") version "1.9.0-1.0.12"
}

dependencies {
  ksp("com.google.dagger:dagger-compiler:2.48") // Dagger compiler
  ksp("com.google.dagger:hilt-compiler:2.48")   // Hilt compiler
}

👉 Dagger KSP hatena-bookmark

 

🚀 Hilt + kapt


// build.gradle.kts (Project)

plugins {
  id("com.google.dagger.hilt.android") version "2.44" apply false
}


// build.gradle.kts (Module)

plugins {
  kotlin("kapt")
  id("com.google.dagger.hilt.android")
}

dependencies {
  implementation("com.google.dagger:hilt-android:2.44")
  kapt("com.google.dagger:hilt-android-compiler:2.44")
}

kapt {
  correctErrorTypes = true
}

👉 Hilt を使用した依存関係の注入  |  Android デベロッパー  |  Android Developers hatena-bookmark

 

🚀 Hilt + KSP


// build.gradle.kts (Project)

plugins {
  id("com.google.devtools.ksp") version "1.8.10-1.0.9" apply false
  id("com.google.dagger.hilt.android") version "2.44" apply false
}


// build.gradle.kts (Module)

plugins {
  id("com.google.devtools.ksp")
  id("com.google.dagger.hilt.android")
}

dependencies {
  implementation("com.google.dagger:hilt-android:2.44")
  ksp("com.google.dagger:hilt-android-compiler:2.44")
}

👉 kapt から KSP に移行する  |  Android デベロッパー  |  Android Developers hatena-bookmark

👉 Revisions · Hilt + kapt → KSP hatena-bookmark

 

🚀 まとめ

Hilt で公式リファレンスを見ながら、kapt → KSP と順番に変化させていけばスムーズに対応できたのに、Dagger KSP ページを見ながら進んだのがハマった原因。

Version Catalog を使っていくことになりそうなので、抜粋しておく。




AndroidX が minSdkVersion 19 に移行

AndroidX ライブラリは、2023 年 10 月のリリースから、サポートされるデフォルトの最小 Android API レベル 19 (以前は 14) に移行します。Play ストアのチェックイン データによると、ほぼすべての Android ユーザーが API 19 以降のデバイスを使用しているため、API レベル 19 ではなくなりました。レガシーバージョンをサポートするために必要です。この変更は、AndroidX ライブラリがアプリ開発者の潜在的なユーザー数を最大化し、Google Play ServicesおよびAndroid NDKと連携するのに役立ちます。

現在、より低い minSdkVersion をサポートしている場合は、その値を 19 に増やし、以前のバージョンをサポートするようにコードをクリーンアップすることをお勧めします。ビジネス上の理由でそれができない場合は、AndroidX の以前のバージョンを使用し続けることをお勧めします。


👉 Android Developers Blog: AndroidX moving to minSdkVersion 19 hatena-bookmark

「API レベル 19」てのは、「Android OS 4.4 / Kitkat」です。

10年前ぐらいにリリースされました。


2023-10-17
+-----+------+--------------+-------+-------+----------+----------+
| API |   OS | CODE_NAME    |  WW % |  JP % | WW SUM % | JP SUM % |
+=====+======+==============+=======+=======+==========+==========+
|  19 |  4.4 | KITKAT       |  0.31 |  0.27 |    99.70 |    99.63 |
+-----+------+--------------+-------+-------+----------+----------+
|  21 |  5.0 | LOLLIPOP     |  0.43 |  0.22 |    99.39 |    99.36 |
+-----+------+--------------+-------+-------+----------+----------+
|  22 |  5.1 | LOLLIPOP_MR1 |  0.89 |  1.73 |    98.96 |    99.14 |
+-----+------+--------------+-------+-------+----------+----------+
|  23 |  6.0 | M            |  1.48 |  1.07 |    98.07 |    97.41 |
+-----+------+--------------+-------+-------+----------+----------+
|  24 |  7.0 | N            |  1.81 |  1.78 |    96.59 |    96.34 |
+-----+------+--------------+-------+-------+----------+----------+
|  25 |  7.1 | N_MR1        |  0.52 |  0.50 |    94.78 |    94.56 |
+-----+------+--------------+-------+-------+----------+----------+
|  26 |  8.0 | O            |  3.07 |  2.94 |    94.26 |    94.06 |
+-----+------+--------------+-------+-------+----------+----------+
|  27 |  8.1 | O_MR1        |  2.50 |  0.78 |    91.19 |    91.12 |
+-----+------+--------------+-------+-------+----------+----------+
|  28 |  9.0 | P            |  7.01 | 10.43 |    88.69 |    90.34 |
+-----+------+--------------+-------+-------+----------+----------+
|  29 | 10.0 | Q            |  9.07 |  9.95 |    81.68 |    79.91 |
+-----+------+--------------+-------+-------+----------+----------+
|  30 | 11.0 | R            | 18.73 | 13.09 |    72.61 |    69.96 |
+-----+------+--------------+-------+-------+----------+----------+
|  31 | 12.0 | S            | 18.93 | 19.03 |    53.88 |    56.87 |
+-----+------+--------------+-------+-------+----------+----------+
|  33 | 13.0 | T            | 34.92 | 37.75 |    34.95 |    37.84 |
+-----+------+--------------+-------+-------+----------+----------+
|  34 | 14.0 | U            |  0.03 |  0.09 |     0.03 |     0.09 |
+-----+------+--------------+-------+-------+----------+----------+

👉 Android OS version market share hatena-bookmark

もういいわな、世界でも、日本でも1%に満たないんだから。


【Android】「Navigation Bar」はどちらか分かりますか?

混乱しません?

【Android】「Navigation Bar」はどちらか分かりますか

【Android】「Navigation Bar」はどちらか分かりますか
👉 Window insets in Compose  |  Jetpack Compose  |  Android Developers hatena-bookmark

【Android】「Navigation Bar」はどちらか分かりますか
👉 Navigation bar – Material Design 3 hatena-bookmark

ネーミングややこしくない?

最近の Android 界隈。


Material3 へのアップグレードで PullRefresh (SwipeRefresh) ができない件

👉 [Feature Request] PullRefreshIndicator for Material 3 [261760718] - Visible to Public - Issue Tracker hatena-bookmark

2023 年 1 月 17 日 05:01AM

accompanist/swiperefresh が非推奨になったので、M3 に実際の代替機能がないのは迷惑です。

2023年2月11日午後12時07分

こんにちは、機能リクエストありがとうございます! 返信が遅くなり申し訳ございません。現時点では、私たちの主な焦点は、PullRefreshIndicator が含まれていないマテリアル 3 デザイン仕様の内容を構築することです。これを完了した後 (今年中頃を目指しています)、データを調べて M2 PullRefresh の使用方法を学び、M3 ライブラリでのビルドの優先順位を評価します。

2023 年 3 月 21 日 12:34AM

私たちと同じように、これが人々の M2 から M3 への完全な移行を妨げる最後の問題になると思います。

2023 年 5 月 5 日 03:25AM

最新のアップデートはこちら:

M2 の pullrefresh には設計上の重大な問題がいくつかあり、このコンポーネントの M3 実装を提供することを最終的に決定する前に、この問題に対処したいと考えています。この M2 の作業が優先されると、M3 の実装に関するより具体的なタイムラインを提供できるようになります。

2023 年 8 月 8 日 09:38AM

こんにちは、いつ発売されるかについての情報はありますか?

そして現時点では、プルを使用して機能を更新するにはどうすればよいでしょうか?

2023 年 8 月 16 日 03:06AM

PullRefresh は、M2 からの既知の移行ギャップであり、現在開発中です。そのタイムラインについてはまだ正確な見積もりがありませんが、この動作のさまざまなコンポーネントが実装されるにつれて、このバグは更新されるでしょう。

現在、M3 で PullRefresh を使用する最良の方法は、その間に M2 ロジックをフォークすることです。

2023 年 8 月 22 日 09:54AM

この問題がこんなに長く続いていることに本当に驚いています。おそらく M3 はまだ準備ができていないので、アップグレードすべきではありません。

2023 年 8 月 28 日 12:17AM

Material3 にアップグレードしたかったのですが、これによってブロックされました。

2023年9月1日 08:22PM

これは私たちにとっても M3 へのアップグレードを妨げる問題です。

2023年9月23日 02:21AM

[マテリアル3][PullRefresh] PullRefreshIndicatorをM3に更新

* APIはPullRefreshState に依存しないように更新されました
* TonalElevation の動作は M3 に移植されていません
* PullRefreshIndicatorTransformation ロジックはここに移動されました
* 注: PullRefreshIndicator と PullRefreshIndicatorDefaults は、PullRefresh 動作の導入とともにパブリックとしてマークされます。

ということでもう少しかかりそうです。

とりあえず、これ、使ってみますか。

Material3 へのアップグレードで PullRefresh (SwipeRefresh) ができない件

👉 Omico/androidx-compose-material3-pullrefresh: A temporary solution for Jetpack Compose Material 3 pull refresh. hatena-bookmark


【macOS Sonoma + Google 日本語入力】かな英数入力切替時に入力先付近に切り替え状態が表示されるやつ便利

かな ↔ 英数 切り替えすると

切り替え先が表示されるように

なってました。

【Google 日本語入力】かな英数切替時に入力先付近に切り替え状態が表示されるやつ便利

いつの間にか知らないうちに更新された便利新機能のようです。

ユーザーによっては、更新されなかったり、されていたり、ばらつきがあるようです。

Google日本語入力の更新についてですが、こちらは自動で更新されるものなのでしょうか?また、いつ更新されたのかなど、更新内容の情報は、どこかに記載されているのでしょうか?

はい、PC 版 Google 日本語入力も自動で更新されます。

👉 Google日本語入力の更新について - Gboard コミュニティ hatena-bookmark

強制的に更新したい場合は、一度アンインストールしてから再インストールしかないのかもしれません。

ちなみに、表示された時点でのバージョンは以下でした。

【Google 日本語入力】かな英数切替時に入力先付近に切り替え状態が表示されるやつ便利

👉 Google 日本語入力 – Google hatena-bookmark

 

😲 あれ、これ実は?!

いや、よく考えたらこれ macOS Sonoma の新機能 だよな!!

クリックで切り替えもできるし!!



 

😲 言語切替時のカーソルインジケータを無効化する

無効に設定したい場合は以下。


sudo mkdir -p /Library/Preferences/FeatureFlags/Domain
sudo /usr/libexec/PlistBuddy -c "Add 'redesigned_text_cursor:Enabled' bool false" /Library/Preferences/FeatureFlags/Domain/UIKit.plist

👉 Disable macOS Sonoma Text Insertion Point (Cursor) / Caps-lock Indicator - Stack Overflow hatena-bookmark