File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 3232# Keep Payload classes that get sent to Optimizely's backend
3333-keep class com.optimizely.ab.event.internal.payload.** { *; }
3434
35+ # Keep the DefaultJsonSerializer and its LazyHolder inner class.
36+ # LogEvent.getBody() calls DefaultJsonSerializer.getInstance() which accesses
37+ # LazyHolder.INSTANCE via the initialization-on-demand holder pattern.
38+ # Without this rule, R8/ProGuard strips LazyHolder and causes:
39+ # NoClassDefFoundError: com.optimizely.ab.event.internal.serializer.DefaultJsonSerializer$LazyHolder
40+ -keep class com.optimizely.ab.event.internal.serializer.DefaultJsonSerializer { *; }
41+ -keep class com.optimizely.ab.event.internal.serializer.DefaultJsonSerializer$LazyHolder { *; }
42+ # GsonSerializer is the serializer selected at runtime on Android (Gson is bundled; Jackson is not).
43+ # Keeping it ensures R8 does not strip the implementation that DefaultJsonSerializer.create() returns.
44+ -keep class com.optimizely.ab.event.internal.serializer.GsonSerializer { *; }
45+
3546# Keep these for logging purposes
3647-keep class com.optimizely.ab.bucketing.DecisionService { *; }
3748-keep class com.optimizely.ab.Optimizely { *; }
You can’t perform that action at this time.
0 commit comments