If R8/Proguard is enabled the following error occurs on the build:
Missing class lombok.Generated (referenced from: io.ably.lib.network.HttpBody io.ably.lib.network.HttpResponse$HttpResponseBuilder.body and 94 other contexts)
This does not happen on version 17.1.1
It looks like maybe something changed in the build but didn’t include a rule in it’s consumer-rules.pro?
gemini says: -dontwarn lombok.** may fix it?
Best answer by Sean M
Hi @J.T. Seán here from the Intercom engineering support team 👋 how are you doing today?
Thanks for reporting this! You're correct, the Ably library (a dependency) uses Lombok annotations that are compile-time only.
Lombok is a Java annotation library that generates code during compilation (like getters, setters, builders, etc.). Once the code is compiled, Lombok's job is done, it's not needed at runtime. The Ably library includes Lombok as a compileOnly dependency, so the annotations are available during build but aren't packaged into the final library.
When R8/ProGuard analyses the bytecode, it sees references to lombok.Generated and other Lombok classes, but those classes don't exist in the runtime classpath (because they were intentionally excluded). This triggers the "Missing class" warning.
So excluding Lombok from ProGuard/R8 warnings like you have said will resolve this.
Hi @J.T. Seán here from the Intercom engineering support team 👋 how are you doing today?
Thanks for reporting this! You're correct, the Ably library (a dependency) uses Lombok annotations that are compile-time only.
Lombok is a Java annotation library that generates code during compilation (like getters, setters, builders, etc.). Once the code is compiled, Lombok's job is done, it's not needed at runtime. The Ably library includes Lombok as a compileOnly dependency, so the annotations are available during build but aren't packaged into the final library.
When R8/ProGuard analyses the bytecode, it sees references to lombok.Generated and other Lombok classes, but those classes don't exist in the runtime classpath (because they were intentionally excluded). This triggers the "Missing class" warning.
So excluding Lombok from ProGuard/R8 warnings like you have said will resolve this.