Dagger 2.51
wanyingd1996
released this
28 Feb 22:07
·
146 commits
to master
since this release
New Dagger Features
- Added a
@LazyClassKey
annotation that supports using class names as a map key. Unlike the existing@ClassKey
, the map generated by@LazyClassKey
won’t eagerly load all of the classes for the keys. This can be useful in situations or environments where classloading can be expensive, such as on Android. For more information, see https://dagger.dev/dev-guide/multibindings
Potential breaking changes
- Protected fields using
@Inject
are now banned in Kotlin classes. This is because Kotlin protected fields are not accessible by code in the same package, unlike Java. This has been working up to this point because Dagger generates Java code, but that is unintentional and would break if Dagger switched to generate Kotlin code.(408431a)
New Hilt Features
- Fixed #3197: Used the new
@LazyClassKey
Dagger feature to remove the keep rule for@HiltViewModel
class names. This allows obfuscation of@HiltViewModel
annotated ViewModel class names with R8. (0786d0a) - Added
@SkipTestInjection
which can be used for skipping test injection in Hilt Android tests, which may be useful if building separate custom test infrastructure to inject the test class from another Hilt component. (c40811e)
Dagger bug fixes
- Improve Dagger MissingBinding error messages to give more information and be more consistent. (c872238)
- Fixed #4201: Suppress warning for casting in Dagger generated code. (813ffce)
- Fixed #4203: Removes
@Deprecated
annotation causing warnings (3cbc94a) - Fixed #4199: Support member injections from type aliased superclass (662d823)
- Complete Ksp support for Dagger Android: Added a Ksp Processor for Dagger Android ProguardProcessor that was previously missed. The ProguardProcessor is a Dagger Android implementation detail that makes sure the AndroidInjector works correctly when shrinking tools obfuscate
@ContributesAndroidInjector
annotated injector class names. (e71de27)