-
Notifications
You must be signed in to change notification settings - Fork 727
Prepare for release 5.0.0 #1316
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@elihart, with KSP, does the option |
Strange, we have epoxyDisableDslMarker enabled with ksp and haven't had a problem. are you sure you are setting annotation options correctly with ksp? |
Ok, good to know it should still work, I'll troubleshoot. We're seeing this in the log :
Not sure if this is kapt or ksp output, looks like kapt. We're using the argument in a convention plugin, it was working with katp, according the
|
If I use this code in our convention plugin then it works 🤷
Equivalent of
|
The in the sample you mentioned, i probably just forgot to uncomment the ksp options when switching between kapt and ksp set ups |
I see, and the Epoxy timing I was seeing in the sample build console were actually coming from |
As discussed here airbnb#1316 (comment)
5.0.0
This adds support for Kotlin Symbol Processing, while maintaining backwards compatibility with java annotation processing via the xprocessing library from Room.
This includes a major version bump to 5.0.0 because there may be slight behavior differences with KSP, especially for generic types in generated code. For example, if you previously had an epoxy attribute in java source code with a raw type it may now appear in the generated code with a wildcard type, which may require tweaking the type that is passed to the model.
Additionally, some type checking was improved, for example more accurate validation of proper equals and hashcode implementations.
To use Epoxy with KSP, simply apply it with the ksp gradle plugin instead of kapt (https://github.com/google/ksp/blob/main/docs/quickstart.md). See the new epoxy-kspsample module for an example.
Note that unfortunately the databinding processor does NOT support KSP, simply because Android databinding itself uses KAPT and KSP cannot currently depend on KAPT sources. The code changes are in place to enable KSP with databinding once the databinding plugin from Android supports KSP (although this is unlikely) - alternatively it may be possible to configure the KSP plugin to run after KAPT and depend on its outputs (you're on your own if you want to try that).
Also, parallel processing support was removed because it is not compatible with KSP.
We have also added easy interop with Jetpack Compose via functions in the
epoxy-composeinterop
artifact.See the epoxy-composesample module for example usage.