# Consumer ProGuard/R8 rules для :vendor:talk-app (F7cloud). # Эти правила ПРОПАГИРУЮТСЯ в R8 приложения :app (vendor собирается как library # с minifyEnabled false, поэтому обычные proguardFiles на потребителя не влияют — # нужен именно consumerProguardFiles, см. app/build.gradle). # Защищают зависимости vendor-форка Nextcloud Talk от переименования/удаления R8. # --- WebRTC (JNI: нативный libjingle_peerconnection_so.so зовёт org.webrtc.* по имени) --- -keep class org.webrtc.** { *; } -dontwarn org.webrtc.** # --- LoganSquare (converter Talk API: сгенерированные $$JsonObjectMapper через рефлексию) --- -keep class com.bluelinelabs.logansquare.** { *; } -keep @com.bluelinelabs.logansquare.annotation.JsonObject class * { *; } -keep class **$$JsonObjectMapper { *; } -keepnames class * extends com.bluelinelabs.logansquare.JsonMapper -keepclassmembers class * { @com.bluelinelabs.logansquare.annotation.JsonField *; } # --- Jackson core (используется LoganSquare) --- -dontwarn com.fasterxml.jackson.** -keep class com.fasterxml.jackson.** { *; } # --- Модели Talk API (парсятся LoganSquare/Gson по именам полей) --- -keep class ru.f7cloud.talk.models.** { *; } # --- Gson (converter-gson + модели) --- -keepattributes Signature,*Annotation*,EnclosingMethod,InnerClasses -keep class com.google.gson.** { *; } -dontwarn com.google.gson.** -keepclassmembers,allowobfuscation class * { @com.google.gson.annotations.SerializedName ; } # --- Retrofit 2 --- -keep,allowobfuscation,allowshrinking interface retrofit2.Call -keep,allowobfuscation,allowshrinking class retrofit2.Response -keepclasseswithmembers class * { @retrofit2.http.* ; } -dontwarn retrofit2.** -dontwarn okio.** -keepattributes RuntimeVisibleAnnotations,RuntimeVisibleParameterAnnotations # --- Parceler (сгенерированные $$Parcelable) --- -keep class **$$Parcelable { *; } -keep interface org.parceler.Parcel -keep @org.parceler.Parcel class * { *; } -keepclassmembers class **$$Parcelable { public static final ** CREATOR; } # --- EventBus (@Subscribe вызывается рефлексией) --- -keepattributes *Annotation* -keepclassmembers class * { @org.greenrobot.eventbus.Subscribe ; } -keep enum org.greenrobot.eventbus.ThreadMode { *; } -keep class org.greenrobot.eventbus.android.** { *; } # --- Dagger / autodagger2 --- -dontwarn dagger.** -dontwarn com.github.lukaspili.autodagger2.** # --- RxJava2 (опциональные зависимости на этапе компиляции) --- -dontwarn java.util.concurrent.Flow* -dontwarn sun.misc.** -dontwarn org.reactivestreams.** # --- Conscrypt (опциональный security-provider) --- -dontwarn org.conscrypt.** -keep class org.conscrypt.** { *; } # --- прочие опциональные/аннотационные зависимости, на которые ругается R8 --- -dontwarn javax.annotation.** -dontwarn org.bouncycastle.** -dontwarn org.slf4j.** -dontwarn okhttp3.internal.platform.** # --- недостающие опциональные refs (из missing_rules.txt R8): geogson→старая guava, # joda-convert аннотации joda-time (maps-стек Talk). Классы отсутствуют в рантайме, # код их не вызывает — безопасно подавить. --- -dontwarn com.google.common.base.Objects$ToStringHelper -dontwarn org.joda.convert.FromString -dontwarn org.joda.convert.ToString