2021年12月16日木曜日

Dagger Hilt 2.40.2 で EntryPoints.get() の便利 overloads である EntryPointAccessors が追加された

今まで
  1. val entryPoint = EntryPoints.get(activity, ActivityCreatorEntryPoint::class.java)  
EntryPointAccessors を使うと
  1. val entryPoint = EntryPointAccessors.fromActivity<ActivityCreatorEntryPoint>(activity)  
fromApplication(), fromActivity(), fromFragment(), fromView() が用意されている。


2021年12月9日木曜日

moshi を Kotlin で使うときは @Json ではなく @field:Json を使う

moshi では、property の名前を json の field 名と別にしたい場合 @Json アノテーションを使いますが、@Json ではなく @field:Json を使うようにします。
  1. class Player {  
  2.   @field:Json(name = "lucky number") val luckyNumber: Int  
  3.   
  4.   ...  
  5. }  
R8 / ProGuard をかけない場合は @Json でも動くのですが、R8 / ProGuard をかける場合は(ライブラリに含まれる keep 設定では) @field:Json にしないとこの指定が効かず、上記のコードだと実行時に luckyNumber にアクセスしたときに NullPointerException になります。